Как отслеживать состояние пула потоков.Net?

Можно ли узнать состояние потоков в пуле потоков? Наше приложение иногда использует много потоков, и это в основном сводится к вызовам ThreadPool.QueueUserWorkItem. Однако, когда приложение на самом деле мало что делает, количество потоков никогда не уменьшается. Я бы подумал, что в конечном итоге эти темы будут остановлены.

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

Приложение использует.Net Compact Framework v2. Возможно, потоки зависают, однако, когда я приостанавливаю приложение в Visual Studio, окно потоков отображает только около 7-8 потоков. Средство просмотра удаленных процессов в комплекте с v2005 утверждает, что процесс использует более 40 потоков. Я могу только предположить, что это просто потоки пула потоков, ожидающие использования.

Какой подход можно использовать для проверки того, что работа в ThreadPool завершается и потоки высвобождаются обратно в пул?

РЕДАКТИРОВАТЬ 1

Пул потоков

Это взято из.NET Compact Framework Remote Performance Monitor, и количество потоков в пуле потоков равно 25. Однако, как я уже говорил, в самой Visual Studio нет 25 потоков, только около 7 или 8.

0 ответов

Другие вопросы по тегам