2010-06-03 10 views
1

Je travaille sur une application de mise à niveau de base de données. Le programme de mise à niveau met à jour le schéma d'une base de données (ajoute de nouvelles colonnes, renomme les colonnes, ajoute de nouvelles tables, de nouvelles vues à une base de données existante en exécutant des instructions SQL). Lorsqu'un utilisateur souhaite passer de la version 1.0 à la version 2.0, les objets "Upgrader" sont extraits d'une fabrique d'objets et la méthode "Execute" de chaque "Upgrader" est appelée. L'interface graphique de l'application dispose d'une barre de progression et chaque fois qu'un objet de mise à niveau exécute une instruction SQL, la barre de progression est incrémentée. Ma question est très simple: comment l'objet de l'upgrader doit-il communiquer avec la barre de progression? Dans le code ci-dessus, l'objet upgrader a un accès direct à la barre de progression, mais je me demande s'il existe une meilleure façon de le faire ou un meilleur motif de conception.C# Modèle de conception ProgressBar

Cordialement, Seb

Répondre

3

je ne serais probablement mis en place une interface pour les opérations de barre de progression (C# échantillon):

interface IProgressBar 
{ 
    int MinValue { get; set; } 
    int MaxValue { get; set; } 
    int Value { get; set; } 
} 

Alors j'aurais l'objet Upgrader prendre un paramètre de ce type d'interface. Enfin, je voudrais créer une classe qui implémente l'interface, et qui contient également une référence au composant de barre de progression qu'il utilise pour visualiser la progression. De cette façon, vous n'aurez pas de couplage étroit entre les mises à niveau et la façon dont la progression est visualisée.

1

Pour implémenter je voudrais ajouter un ProgessEvent à IUpgrader qui est alimenté à partir de l'upgrader. Le GUI peut ajouter des écouteurs d'événement à cet événement et mettre à jour le progessbar en conséquence.

De nombreuses applications sont en train de fonctionner. Ils avancent leur barre de progression en utilisant une minuterie qui maintient l'illusion que l'application occupée est toujours en vie.

Questions connexes