Donc, quelque chose me dérange sur le nouveau support asynchrone en C # 5:
L'utilisateur appuie sur un bouton qui démarre une opération asynchrone. L'appel revient immédiatement et la pompe à messages recommence à fonctionner - c'est tout.
Ainsi, l'utilisateur peut appuyer à nouveau sur le bouton - provoquant une nouvelle entrée. Et si c'est un problème?
Dans les démos que j'ai vues, ils désactivent le bouton avant l' await
appel et le réactivent ensuite. Cela me semble être une solution très fragile dans une application réelle.
Faut-il coder une sorte de machine à états qui spécifie quels contrôles doivent être désactivés pour un ensemble donné d'opérations en cours? Ou existe-t-il une meilleure façon?
Je suis tenté de simplement afficher une boîte de dialogue modale pendant la durée de l'opération, mais cela ressemble un peu à l'utilisation d'un marteau.
Quelqu'un a des idées brillantes, s'il vous plaît?
ÉDITER:
Je pense que la désactivation des contrôles qui ne devraient pas être utilisés pendant l'exécution d'une opération est fragile car je pense que cela deviendra rapidement complexe lorsque vous aurez une fenêtre avec de nombreux contrôles dessus. J'aime garder les choses simples car cela réduit les risques de bugs, à la fois lors du codage initial et de la maintenance ultérieure.
Que se passe-t-il s'il existe une collection de contrôles qui doivent être désactivés pour une opération particulière? Et si plusieurs opérations s'exécutent simultanément?