Я начал получать это исключение в моем приложении. Я взял дамп и вот как выглядит пул потоков:
0:014> !threadpool
CPU utilization: 81%
Worker Thread: Total: 1000 Running: 4 Idle: 996 MaxLimit: 1000 MinLimit: 1000
Work Request in Queue: 0
--------------------------------------
Number of Timers: 1
--------------------------------------
Completion Port Thread:Total: 32 Free: 31 MaxFree: 8 CurrentLimit: 32 MaxLimit: 1000 MinLimit: 1000
Эти 996 свободных потоков имеют похожий стек вызовов, который выглядит следующим образом:
ntdll!NtWaitForSingleObject+0x14
KERNELBASE!WaitForSingleObjectEx+0x8f
clr!CLRSemaphore::Wait+0x8a
clr!ThreadpoolMgr::UnfairSemaphore::Wait+0x115
clr!ThreadpoolMgr::WorkerThreadStart+0x28b
clr!Thread::intermediateThreadProc+0x86
kernel32!BaseThreadInitThunk+0x14
ntdll!RtlUserThreadStart+0x21
Если все эти незанятые потоки ожидают выполнения работы, то почему я получил исключение «Недостаточно свободных потоков в ThreadPool для завершения сообщения операции»?