Каким костылем можно узнать что завершены/заснули все потоки ThreadPool?
Если используете treadpool, то там скорее только через WaitHandle.WaitAll.
https://msdn.microsoft.com/en-us/library/z6w25xa6%...
Так введите переменную счетчик, как запускаете задачу, то сразу Interlocked.Increment(ref counter); как завершаете, то Interlocked.Decrement(ref counter);. Достиг нуля значит надо вызвать eventCompleted