标签: c# asynchronous concurrency parallel-processing task-parallel-library
我从here了解到Task.Whenall的任务执行顺序不是确定性的,但我找不到有关结果顺序的任何信息。
Task.Whenall
结果集合是否按照输入中排序的任务或结果的顺序包含结果?
从我做的测试来看,它似乎保留了订单,但我需要确认。
答案 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)。