Task.WhenAll结果排序

时间:2014-04-19 21:11:28

标签: c# asynchronous concurrency parallel-processing task-parallel-library

我从here了解到Task.Whenall的任务执行顺序不是确定性的,但我找不到有关结果顺序的任何信息。

结果集合是否按照输入中排序的任务或结果的顺序包含结果?

从我做的测试来看,它似乎保留了订单,但我需要确认。

1 个答案:

答案 0 :(得分:82)

来自MSDN

Task.WhenAll<TResult>(IEnumerable<Task<TResult>>)

这是包含此声明的四个中唯一的重载:

  

如果没有任何任务出现故障并且没有任何任务被取消,那么   结果任务将以RanToCompletion状态结束。的结果   返回的任务将被设置为包含所有的任务的数组   提供的任务的结果与提供的顺序相同   (例如,如果输入任务数组包含t1,t2,t3,则为输出任务   结果将返回一个TResult [],其中arr [0] == t1.Result,arr 1 ==   t2.Result,and arr [2] == t3.Result)。