从List <task> </task>中删除已完成的任务

时间:2014-09-05 13:53:40

标签: .net c#-4.0 task-parallel-library

我在.net 4.0中使用TPL来异步处理多个任务。 以下是代码段:

List<Task> TaskList = new List<Task>();
while (some condition)
{
    var t = Task.Factory.StartNew( () = > doSomething () );
    TaskList.Add(t)
}

//Wait for all tasks to complete
Task.WaitAll(TaskList.toArray());

如果while循环运行了很长时间,那么&#34; TaskList&#34;的大小会发生什么变化? 我担心如果while循环运行了几天,这将占用大量内存。 我是否必须从该列表中删除已完成的任务,或者它们是否会自动处理?

还有其他方法可以根据内存进行优化吗?

1 个答案:

答案 0 :(得分:8)

TaskList.RemoveAll(x => x.IsCompleted);
  

我是否必须从该列表中删除已完成的任务或是否自动处理?

不,如果不这样做,任何人都不会删除List的条目。