Ваши требования по существу исключают использование .NET ThreadPool;
Как правило, его не следует использовать для длинных потоков, из-за опасности истощения пула.
Этооднако, он хорошо работает в службах Windows, и вы можете раскрутить несколько потоков - автоматически ограниченных пределами пула.
Вы не можете гарантировать время запуска потока с помощью пула потоков;он может ставить в очередь потоки для выполнения, когда у него достаточно свободных, и он даже не гарантирует, что они будут запущены в той последовательности, в которой вы их отправляете.
Нет простых способов обнаружить и уничтожить запущенные потоки в ThreadPool
Итак, по сути, вы захотите посмотреть за пределы ThreadPool;Я мог бы порекомендовать вам, возможно, вам понадобятся «полные» System.Threading.Thread
экземпляры только из-за всех ваших требований.Пока вы обрабатываете проблемы параллелизма (как и в случае с любым механизмом потоков), я не считаю, что класс Thread действительно очень сложен для управления, на самом деле.