C#.net - Comment le programme alerte que le thread est terminé (event driven)?
ceci est un extrait de ma classe:
public bool start()
{
Thread startThread = new Thread(this.ThreadDealer);
startThread.Start();
return _start;
}
Dans ThreadDealer() je suis à la définition de la variable booléenne "_start" false ou true. Ce dont j'ai besoin maintenant, mais n'arrive pas à comprendre est un événement d'alerte start() pour exécuter en son instruction de retour lorsque le ThreadDealer()-Thread a fini.
J'ai essayé quelque chose avec un AutoResetEvent et .WaitOne (), mais depuis j'ai une interface graphique qui vient de blocs tout et tout c'est ce que j'en ai besoin pour le faire (attendre pour le Fil à la fin), il est inutile si il bloque mon GUI.
Toute aide serait grandement appréciée.
OriginalL'auteur unknownNewbie | 2011-04-05
Vous devez vous connecter pour publier un commentaire.
Ce que vous voulez faire -- attendre que le thread d'arrière-plan dans une méthode de la thread de l'INTERFACE utilisateur, mais encore permettre à l'INTERFACE utilisateur réactive -- n'est pas possible. Vous avez besoin de partager votre code en deux parties: l'Une exécutée avant le départ (ou en parallèle) le thread d'arrière-plan et l'autre en cours d'exécution après le thread d'arrière-plan est terminé.
La façon la plus simple est d'utiliser le Classe BackgroundWorker. Il déclenche un événement dans le thread d'INTERFACE utilisateur (
RunWorkerCompleted
) après son travail est fait. Voici un exemple:OriginalL'auteur Heinzi
Simplement déclencher un événement. Il sera exécuté sur le fil mal, donc quel que soit le gestionnaire d'événements de a à traiter avec que par regroupement de l'appel, si nécessaire, à la mise à jour de l'INTERFACE utilisateur. Par l'utilisation de la commande.Commencer/Invoke ou Répartiteur.Commencer/Invoke, en fonction de la classe à la bibliothèque que vous utilisez.
Ou de l'utilisation de la classe BackgroundWorker, il le fait automatiquement.
OriginalL'auteur Hans Passant