我在.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循环运行了几天,这将占用大量内存。 我是否必须从该列表中删除已完成的任务,或者它们是否会自动处理?
还有其他方法可以根据内存进行优化吗?
答案 0 :(得分:8)
TaskList.RemoveAll(x => x.IsCompleted);
我是否必须从该列表中删除已完成的任务或是否自动处理?
不,如果不这样做,任何人都不会删除List
的条目。