private void StartWorker() { if (activeThreads < maxThreads && !suspended) { if (++activeThreads == 1) { // hook for transition from Idle to Active OnActive(); } ThreadPool.QueueUserWorkItem(Worker); } }