Attendez que tous les threads aient terminé leur travail dans ThreadPool
j'ai ce code:
var list = new List<int>();
for(int i=0;i<10;i++) list.Add(i);
for(int i=0;i<10;i++)
{
ThreadPool.QueueUserWorkItem(
new WaitCallback(x => {
Console.WriteLine(x);
}), list[i]);
}
Et je veux savoir quand tous les threadpools threads terminé leur travail. Comment je peux faire?
source d'informationauteur Neir0
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin pour suivre ce vous-même.
Une option pour cela est d'utiliser un compteur et un événement de réinitialisation:
.NET Framework 4+ utiliser le Système pratique.Le filetage.CountdownEvent classe:
Je ne suis pas sûr si ThreadPool expose une telle fonctionnalité, mais vous pouvez utiliser d'attente poignées et par la voie de l'itération deux fois me semble inutile:
Le thread pool de ne pas vous dire quand le thread a fini de l'exécution, de sorte que l'élément de travail doit le faire elle-même. J'ai modifié le code comme ceci:
C'est comment j'allais le faire.