System.Threading.ThreadPool.QueueUserWorkItem()を使用してタスクを実行しています。
アプリケーションを実行しているときに、大量のメモリを消費していることに気付き、タスク マネージャーを使用してダンプ ファイルを取得しました。調べてみると、次のスタックで多くのスレッドがスタックしていることがわかりました。
ntdll!NtWaitForSingleObject+a
KERNELBASE!WaitForSingleObjectEx+79
mscorwks!CLREvent::WaitEx+174
mscorwks!CLREvent::WaitEx+63
mscorwks!ThreadpoolMgr::SafeWait+7b
mscorwks!ThreadpoolMgr::WorkerThreadStart+11a
mscorwks!Thread::intermediateThreadProc+78
kernel32!BaseThreadInitThunk+d
ntdll!RtlUserThreadStart+1d
また
ntdll!NtWaitForWorkViaWorkerFactory+a
ntdll!TppWorkerThread+2c9
kernel32!BaseThreadInitThunk+d
ntdll!RtlUserThreadStart+1d
これらのスレッドがスタックしているのはなぜですか? 間違った API を使用していますか? スレッドを正しく管理していないのでしょうか。