Déterminer si tous les threads ont fini c#

Je suis très nouveau à l'enfilage, en tant que débutant en C#. J'ai un programme qui sera tir plusieurs threads à l'intérieur d'une application windows. Mon objectif est de commencer un nouveau thread pour chaque élément dans une liste. Les éléments de cette liste sont des noms de station de travail sur anetwork. Chaque thread est créé va chercher à faire des réparations sur chaque machine, lorsque le thread a fini, il va écrire dans un fichier journal de toutes les erreurs trouvées etc. Mais ce que je veux être en mesure de déterminer, c'est lorsque tous les threads ont fini. Donc, si j'ai 100 machines, 100 threads, comment puis-je déterminer quand tous ont fermé?

Heres ma méthode ci-dessous :-

private void repairClientsToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (machineList.Count() != 0)
    {
        foreach (string ws in machineList)
        {
            new Thread(new ParameterizedThreadStart(fixClient), stack).Start(ws);
        }
    }
    else
    {
         MessageBox.Show("Please import data before attempting this procedure");
    }
}
double possible de Attendre deux threads terminer
Il y a une belle méthode pour les Tâches, Task.WaitAll (msdn.microsoft.com/en-us/library/dd270695.aspx). Bien sûr, si vous devez utiliser des threads, ce qui n'aidera pas.
Je recommande également que vous commencez à utiliser la Task Parallel library.
pas un doublon. Le lien n'indique pas ou de la mention d'un GUI de gestionnaire d'événements. Toute solution qui implique d'attendre sur un sunchro objet comme Join() ou WFMO(), ne doit pas être utilisé à l'intérieur d'un gestionnaire d'événements. La terminé l'exécution de la dernière tâche doit déclencher l'Invoquer/BeginInvoke l'exécution d'un délégué sur le thread GUI.
Ok answerers comment 'bout nous nous arrêtons suggérant blocage des appels sur le thread d'INTERFACE utilisateur hein?

OriginalL'auteur Derek | 2012-04-24