J'ai un service Web avec deux méthodes:Voulez-vous que le gestionnaire d'événements s'exécute une seule fois/Conception de la machine d'état?
RetrieveFirstLevelOptions() et RetrieveSecondLevelOptions (int levelOneOption).
L'interface graphique contient deux zones de liste déroulante: FirstLevelOptionsCombo et SecondLevelOptionsCombo.
J'ai un problème avec la création d'un flux de contrôle pour l'étape d'initialisation lorsque je dois faire une demande à RetrieveFirstLevelOptions() et, une fois les résultats obtenus, appeler RetrieveSecondLevelOptions (par défaut levelOneOption = 0). Le problème est que puisque tout se passe de manière asynchrone, je ne sais pas quelle est la meilleure approche pour permettre que ce comportement se produise une fois et une seule fois, au début.
Une option que j'aimerais tant est d'attacher un deuxième gestionnaire d'événements à l'événement RetieveFirstLevelOptionsCompleted et de le supprimer lui-même après une seule exécution. Mais il semble qu'un tel comportement soit impossible à obtenir.
Une autre option consisterait à avoir un indicateur booléen pour indiquer si dans la phase d'initialisation et si c'est le cas, le gestionnaire de RetrieveFirstLevelOptionsCompleted exécuterait une logique supplémentaire. Cependant, cette idée donne l'impression que tous les gestionnaires d'événements doivent vérifier les informations d'état et faire des choses différentes en fonction de l'état actuel. Cela semble être une mauvaise conception parce que le flux de contrôle semble décentralisé.
Je veux avoir un mécanisme de flux de contrôle centralisé qui prendra les décisions en un seul endroit. Mais comment cela peut-il être fait quand tout est exécuté de manière asynchrone?
Pourquoi le « supprimer le gestionnaire d'événements après avoir exécuté une fois » impossible d'obtenir? –
La citation est "supprimer lui-même après avoir couru qu'une seule fois". Si vous savez comment faire fonctionner ça, j'aimerais beaucoup le voir. Sinon, nous revenons à l'idée de machine d'état. – Rire1979