データの処理を同時に処理する複数のタスクを作成する次のコードがあります。仕事を終えたタスクはどうなるのだろう?それらは自動的に破棄されますか?
var itemListByGroups = items.GroupBy(x => x.SomeValue);
List<Task> tasks = new List<Task>();
// Can create 20 to 30 tasks based on the result of the grouping
foreach (var itemList in itemListByGroups)
{
var task = Task.Factory.StartNew(() =>
{
// intense processing
});
tasks.Add(task);
}
Task.WaitAll(tasks.ToArray());
上記のコードは、処理するアイテムがさらにある場合に数秒ごとに呼び出されます。私の懸念は、タスクの数が増え続けるかどうかです。