.NET4.0TPLプログラマーに質問がありました。このTPLとThreadPoolストレステスターを作成しました。Xテストを実行し、各テストはY個のタスクを実行し、終了すると次のテストに進みます。
私が抱えている問題は、1つのテストで100個のタスクを開始すると、次のテストでさらにタスクが追加されるなど、大量のスレッドが残ることです。
(私が持っているスレッド数はリソースモニターから取得されます)。
擬似コード:
while (tasksLeftToRun != 0)
{
var nextTask = new Task(new Action(()=>
{
Thread.Sleep(20);
}), cancellationToken);
nextTask.Start();
nextTask.ContinueWith((t) =>
{
//...
},TaskScheduler.Default);
tasksLeftToRun--;
}
アプリケーションがテストを終了してから約15秒後、スレッド数は約7に減少します。
ありがとう!