Quelles méthodes peuvent être utilisées pour que le thread attende un événement et poursuive son exécution?
J'ai un thread en cours d'exécution que les délégués de certaines tâches. Quand une tâche est terminée, un événement est déclenché en disant qu'elle a terminé. Ces tâches doivent être exécutées dans un ordre spécifique et nécessaire d'attendre que la tâche précédente à la fin. Comment puis-je faire la fil d'attente jusqu'à ce qu'il reçoit la "tâche à accomplir" événement? (En dehors de l'évident eventhandler qui définit un indicateur, puis une boucle while interrogation du drapeau)
source d'informationauteur MGSoto
Vous devez vous connecter pour publier un commentaire.
J'utilise souvent le
AutoResetEvent
attendre la poignée quand j'ai besoin d'attendre une tâche asynchrone pour finir:Une option serait d'utiliser un EventWaitHandle de signal d'achèvement.
Vous pouvez utiliser un ManualResetEvent pour cela.
Le thread qui doit d'abord le processus prend tout de resetEvent, et attend jusqu'à la fin pour Définir l'événement.
Le thread qui doit attendre peut contenir une poignée, et d'appeler resetEvent.WaitOne(). Cela va bloquer le thread jusqu'à ce que la première est terminée.
Cela permet de gérer le blocage et l'ordre des événements dans un très propre manière.
J'ai eu de bons résultats en utilisant une méthode de rappel que le thread de travail appelle quand c'est fait. Il bat d'interrogation et il est facile de passer des paramètres à l'appelant.