Я пытаюсь отслеживать состояния группы потоков в приложении Microsoft.NET, написанном на C#. Я хотел бы также иметь возможность отслеживать любые дочерние потоки, порожденные исходными потоками.
В Java вы можете назначать потоки группе потоков, и их дочерние элементы также будут входить в эту группу. Есть ли эквивалент в .NET?
Я кратко рассмотрел ExecutionContext и LogicalCallContext, но я не вижу, как найти все потоки, которые находятся в контексте. У Раймонда Чена есть статья о Метод Win32 API для перечисления потоков, но я надеюсь, что мне не нужно опускаться так низко.





Вы можете перечислить потоки в своем процессе, используя свойство Потоки System.Diagnostics.Process.
Однако обратите внимание, что объекты, которые вы здесь получаете, не того же типа, что и те, которые вы создаете для самостоятельного запуска потоков (т. Е. Не являются объектами System.Threading.Thread).
Однако концепции групп потоков не существует, AFAIK.
Они работают над чем-то подобным в своем API «Задач», который является частью Parallel Extensions.
Сделай это проще:
Создайте свой класс ThreadGroup с помощью метода, обертывающего процесс создания потока.
Когда этот метод вызывается, он добавляет созданный поток в коллекцию, и там ваша группа.
Это хорошая идея, если вы контролируете весь код, запускающий потоки, но я этого не делаю.