Есть много разных способов начать новые темы. Пул потоков используется не только QueueUserWorkItem
и BackgroundWorker
, но и любым кодом, который выполняет асинхронные вызовы делегатов. Кроме того, методы Begin...
и End...
для выполнения асинхронных операций, таких как Stream.BeginRead
и Stream.EndRead
начальные и конечные потоки. И, конечно, есть стандарт Thread.Start()
при использовании управляемых потоков. И еще есть библиотека параллельных задач. , .
И, конечно, существует множество способов запуска потоков непосредственно с помощью Windows API.
Даже если вы игнорируете возможности Windows API, вы все равно просите подключить ряд различных механизмов, чтобы вы могли отслеживать активность. Вам нужно подключить функции управляемого потока, а также функции пула потоков, которые запускают и закрывают рабочие элементы.
Общее решение этой проблемы, вероятно, невозможно без серьезного изучения библиотеки времени выполнения и выполнения всевозможных неприятных недокументированных действий в неуправляемом коде. Даже тогда я не уверен, что это можно сделать. Нужные крючки просто не выставлены.
А если вы хотите включить возможности Windows API ... ну, удачи.