Supposons que je commence deux fils comme ceci:Comment énumérer des threads dans .NET en utilisant la propriété Name?
// Start first thread
Thread loaderThread1 = new Thread(loader.Load);
loaderThread1.Name = "Rope";
loaderThread1.Start();
// Start second thread
Thread loaderThread2 = new Thread(loader.Load);
loaderThread2.Name = "String";
loaderThread2.Start();
Est-il possible que je peux énumérer les fils en utilisant leur propriété Name?
Je veux être capable de vérifier si un thread avec un nom spécifique est toujours en cours d'exécution.
Chaque thread que je crée fonctionne avec un ensemble de données nommé, le nom de l'ensemble de données est utilisé comme nom pour le thread travaillant avec les données. Avant de démarrer un thread de travail, je veux voir si un thread précédent pour le même jeu de données est déjà en cours d'exécution.
Les fils que j'obtiens en utilisant System.Diagnostics.GetCurrentProcess().Threads
sont de type ProcessThread
, pas Thread
!
Juste pour ajouter une petite note aux réponses ci-dessous, il peut être sage dans certaines situations utilisez WeakReference pour éviter les fuites de mémoire. Les threads peuvent avoir plus de données associées que la plupart ne le pensent car les bibliothèques peuvent choisir d'utiliser des choses comme TLS/CallContext. Si vous ne prévoyez pas de supprimer explicitement vos threads de la collection lorsqu'ils se terminent, WeakReference autorise toujours la récupération de place. – TheXenocide