我在.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循环运行很长时间,"TaskList"的大小会发生什么变化?我担心,如果while循环运行几天,这将占用大量内存。我必须从该列表中删除已完成的任务吗?还是自动处理这些任务?
有没有其他方法可以在内存方面优化它?
TaskList.RemoveAll(x => x.IsCompleted);
我必须从该列表中删除已完成的任务吗?还是自动处理这些任务?
不,如果您不删除List
的条目,则没有人会删除。