我有简单的代码,我知道答案:
List<Task<int>> list = new List<Task<int>>;
for(int i=0;i<10;i++)
{
list.Add(new Task<int>((j) => return (int)j%2, i);
}
list.Foreach(t => t.Start());
现在我想等待所有Tasks
,好吧?
Task.WaitAll(list.ToArray());
P.S:
关于WaitAll
:
public static void WaitAll(params Task[] tasks)
答案 0 :(得分:1)
是的,这正是Task.WaitAll
的用途。
但是如果你知道在创建它们之前你将要完成多少任务,你应该从一开始就坚持Task[]
而不是List<Task>
:
var tasks = new Task[10];
for(int i=0;i<10;i++)
{
var task = new Task<int>(x => return x % 2, i);
tasks[i] = task;
task.Start();
}
Task.WaitAll(tasks);
这样您就可以跳过来回移动List<T>
到T[]
数组。