任务C#,Tast <t>列表和Task.Wait()</t>

时间:2014-04-04 00:29:09

标签: c# task

我有简单的代码,我知道答案:

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)

1 个答案:

答案 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[]数组。