2009-12-29 3 views
3

Я пытаюсь устранить проблему с большим объемом многопроцессорности - я подозреваю, что клиентская библиотека создает поток переднего плана, и я пытаюсь проверить правильность этой теории.Как я могу получить список всех потоков в приложении .Net?

Чтобы сделать это, я хотел бы иметь возможность регистрировать список всех потоков в процессе, каково их состояние и являются ли они фоном или передним планом.

Я видел Process.GetCurrentProcess(). Threads, но возвращает объект ProcessThread, а не System.Thread. ProcessThread не имеет всех свойств, которые делает System.Thread.

Есть ли способ получить список System.Threads?

+0

BTW, потоки, возвращаемые Process.Threads являются OS нити, не управляемые потоки –

ответ

3

Как об использовании Sysinternal's ProcMon

Как @jvilalta отметил, Process Explorer также хороший вариант.

+1

Или их Process Explorer ... – jvilalta

+1

Или Process Hacker http://processhacker.sourceforge.net – KingRadical

+1

Обратите внимание, что это не гарантирует, что будет отдельный поток ОС (который является показателем procmon и procexp) для каждого потока CLR: см. http://stackoverflow.com/questions/466632/how-can-i-get-managed-threads-from-process-getcurrentprocess-threads. Поэтому procmon может пропустить некоторые управляемые потоки. Также обратите внимание, что потоки ОС не будут иметь информацию о потоке, такую ​​как имя и передний план/фон: какое показание procmon/procexp эквивалентно ProcessThread, которое Джереми говорит, что он уже рассмотрел и отклонил. – itowlson

2

Visual Studio изначально имеет возможность просматривать все активные темы, или вы могли бы использовать DebugInspector (не уверен, что в URL, извините).

От C#, не уверен, как это можно сделать.

Смежные вопросы