Просмотр, приостановка и уничтожение потоков в работающем приложении .Net - PullRequest
4 голосов
/ 19 сентября 2008

Я работаю над приложениями .Net с несколькими потоками, делающими разные вещи. Когда в работе что-то идет не так, я хочу видеть, какие потоки работают (по их управляемому имени), а также иметь возможность приостановить / убить их.

В любом случае, чтобы достичь этого?

VS не всегда доступен (хотя хороший вариант, когда есть), и WinDbg UI не для слабонервных.

Я рассматривал окно потоков внутри программы, как VS во время отладки, но не смог найти программный способ сделать это. Process.GetThreads возвращает очень мало полезных данных.

Ответы [ 5 ]

3 голосов
/ 15 октября 2009

Поиск тем:

using System.Diagnostics;

ProcessThreadCollection threads = Process.GetCurrentProcess().Threads;

Обычно вы можете уничтожать управляемые потоки, используя Thread.Abort (). Если они находятся в режиме сна, ожидания или присоединения, вы можете даже избежать неприятностей с (менее неприятным) Thread.Interrupt ().

2 голосов
/ 19 сентября 2008

Нет ничего встроенного в .net, который сделает это. Если вы хотите программно перебирать свои активные потоки, вы должны зарегистрировать их где-нибудь при запуске и либо отменить их регистрацию по завершении, либо отфильтровать их, прежде чем действовать на них. Мы сделали версию этого, и она требует нетривиального объема работы.

0 голосов
/ 20 сентября 2008

А как насчет удаленной отладки? Это может быть немного сложно для настройки из-за безопасности и обеспечения правильных символов отладки.

Настройка удаленной отладки

0 голосов
/ 20 сентября 2008

Вы можете использовать ProcessExplorer для просмотра запущенных потоков в процессе по идентификатору и состоянию.

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

Используйте вкладку «Нить» окна «Свойства».

Вы также можете убить потоки и просмотреть стек потоков

0 голосов
/ 19 сентября 2008

Вы можете подключить управляемый отладчик для просмотра / остановки потоков или использовать WinDbg с расширениями SOS, если вы хотите что-то более легкое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...