Attendre QueueUserWorkItem pour Compléter
Si j'ajoute des emplois pour le pool de threads avec QueueUserWorkItem
... comment faire pour garder mon programme d'aller de l'avant jusqu'à ce que tous les travaux sont terminés?
Je sais que je pourrais ajouter un peu de logique pour garder l'application de s'exécuter jusqu'à ce que toutes les tâches sont terminées, mais je veux savoir si il y a quelque chose comme Thread.Join()
ou si il y a moyen de récupérer chaque thread qui est affecté à un emploi.
La version de .NET vous aide?
.net version 2.0
.net version 2.0
OriginalL'auteur PedroC88 | 2011-06-30
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les événements de synchronisation. Comme ceci:
Si vous ne voulez pas intégrer événement dans votre méthode, vous pourriez faire quelque chose comme ceci:
Pour plusieurs éléments:
mise à jour de la réponse.
cela a une limite de 64 éléments. Comme les autres réponses indiquent qu'il y a de plus adapté construit pour faire face à de multiples tâches, mais si vous ciblez les anciens profils, vous pouvez utiliser un seul événement et l'utilisation d'un compteur décrémenté avec Interloqué.Décrémenter
OriginalL'auteur Alex Aza
La meilleure façon de le faire est d'utiliser la
CountdownEvent
classe. C'est assez bien établi motif, et qui est aussi évolutif qu'il obtient.Excellente réponse! Mais comment pourrais-je être en mesure d'annuler les fils prématurément avec
CountdownEvent
? Comme si j'étais l'utilisation de ce dans une application Windows Forms et l'utilisateur ferme le formulaire, mais il y a des threads en cours d'exécution.Cette réponse est un peu dépassé. Plus contemporain solution est d'utiliser la Task Parallel Library pour des trucs comme ça. De toute façon, inclus dans le TPL est la coopérative d'annulation de cours. C'est ce qui devrait être utilisé pour se terminer normalement threads.
OriginalL'auteur Brian Gideon
Vous pouvez utiliser .NET Barrière classe pour atteindre cet objectif.
J'ai ajouté un exemple - note .NET 4 fonction
OriginalL'auteur Drew R