从列表<任务>中删除已完成的任务

And*_*ndy 5 .net task-parallel-library c#-4.0

我在.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());
Run Code Online (Sandbox Code Playgroud)

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

在内存方面有没有其他方法来优化它?

ths*_*ths 11

TaskList.RemoveAll(x => x.IsCompleted);
Run Code Online (Sandbox Code Playgroud)

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

不,没有人会删除你的条目,List如果你不这样做.