2008-09-30 9 views
3

J'essaie de surveiller les états d'un groupe de threads dans une application Microsoft.NET écrite en C#. J'aimerais pouvoir également surveiller tous les fils enfants générés par les threads d'origine.. NET équivalent aux groupes de threads Java?

En Java, vous pouvez affecter des threads à un groupe de threads, et leurs enfants appartiendront également au groupe. Existe-t-il un équivalent dans .NET? J'ai brièvement regardé ExecutionContext et LogicalCallContext, mais je ne peux pas voir comment trouver tous les threads qui sont dans un contexte. Raymond Chen a un article sur un Win32 API method pour énumérer des discussions, mais j'espère que je ne devrais pas aller aussi bas.

Répondre

3

Vous pouvez énumérer les threads dans votre processus en utilisant la propriété Threads de System.Diagnostics.Process. Notez toutefois que les objets que vous obtenez ici ne sont pas du même type que ceux que vous créez pour démarrer des threads vous-même (c'est-à-dire ne sont pas des objets System.Threading.Thread).

Un concept de groupes de fils n'existe pas cependant, AFAIK.

2

Ils travaillent sur quelque chose comme ça dans leur API "Task", qui fait partie de Parallel Extensions.

1

faire simple:

Créer votre classe ThreadGroup avec une méthode enveloppant le processus de création de fil. Lorsque cette méthode est appelée, elle ajoute le thread créé à une collection et votre groupe est ajouté.

+0

C'est une bonne idée si vous contrôlez tout le code qui lance des threads, mais ce n'est pas le cas. –