C# en Attente pour plusieurs threads pour finir
J'ai une application windows forms que je suis la vérification de tous les ports série pour voir si un périphérique est connecté.
C'est comment je le spin off de chaque thread. Le code ci-dessous est déjà filé à la sortie de l'thread gui.
foreach (cpsComms.cpsSerial ser in availPorts)
{
Thread t = new Thread(new ParameterizedThreadStart(lookForValidDev));
t.Start((object)ser);//start thread and pass it the port
}
Je veux que la prochaine ligne de code à attendre jusqu'à ce que tous les threads ont fini.
J'ai essayé d'utiliser un t.join
là, mais cela ne les traite de façon linéaire.
- Strictement comme une note de côté et non que vous avez demandé à ce sujet, mais vous pouvez mettre IsBackground = true sur le thread pour pas bloquer le thread principal si vous quittez l'application.
Vous devez vous connecter pour publier un commentaire.
Modifier
J'étais à la recherche de retour au présent, et j'aime les suivantes mieux
Utiliser les Classes AutoResetEvent et ManualResetEvent:
La plus simple et la plus sûre façon de le faire est d'utiliser un CountdownEvent. Voir Albahari.
Vous pouvez utiliser un CountDownLatch:
Exemple comment l'utiliser:
Magasin le Thread résultats dans une liste, une fois qu'ils ont été générés et de réitérer la liste - au cours d'une itération appeler les rejoindre. - On encore s'inscrire de façon linéaire, mais il devrait faire ce que vous voulez.