2010-01-21 4 views
1

Lancement de ma première application graphique sérieuse en C#.Idées de mise à jour de formulaires intelligentes

J'ai une classe qui gère et fait beaucoup de choses que je peux brancher des méthodes de ma classe de contrôleur GUI dans et obtenir des événements lorsque cela est approprié.

J'ai plusieurs listes de sélection et autres contrôles que je veux mettre à jour chaque fois que cette information est mise à jour. Cependant, j'aimerais limiter cela un peu.

Pour les contrôles sur mon formulaire GUI qui se mettraient à jour très souvent si je le laisse (chaque fois qu'un délégué déclenche) devrais-je mettre un temporisateur qui met à jour peut-être une fois par seconde. Et avec les autres il suffit de les mettre à jour chaque fois que la classe qui contrôle le flux de données.

Est-ce ce qu'un professionnel ferait? Je déteste utiliser une minuterie si je peux éviter mais j'ai peur de la mise à jour du formulaire comme un fou, selon les circonstances.

Répondre

2

Je ne vois rien de mal à utiliser une minuterie. C'est ce que la limitation est, essentiellement - ne permettent pas plus de x événements par seconde. L'important est d'avoir votre minuterie pour vérifier que quelque chose a changé avant de mettre à jour aveuglément l'interface utilisateur - vous ne voulez pas faire des mises à jour d'écran toutes les demi-secondes sans raison. So-hook les événements comme vous le feriez normalement, mais au lieu de faire une mise à jour immédiate, définissez un drapeau. Le minuteur peut vérifier le drapeau avant de mettre à jour l'interface utilisateur. Ou, si vous êtes un adepte de l'optimisation, faites en sorte que les événements démarrent le temporisateur et que le temporisateur s'arrête immédiatement après une mise à jour; De cette façon, votre minuterie ne fonctionne pas du tout sauf s'il y a eu un événement récent.

Je ne peux pas donner une réponse définitive à la question de savoir si c'est ce qu'un «professionnel» ferait, car les professionnels dans ce domaine semblent avoir des façons très différentes de faire beaucoup de choses.