Task.WhenAll结果排序

use*_*661 30 c# parallel-processing concurrency asynchronous task-parallel-library

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

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

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

Yuv*_*kov 89

来自MSDN:

Task.WhenAll<TResult>(IEnumerable<Task<TResult>>)
Run Code Online (Sandbox Code Playgroud)

这是包含此语句的四个中唯一的重载:

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

  • 为了让人们清楚地看到像我这样的人,重载`Task.WhenAll <TResult> Method(Task <TResult> [])`也包含相同的语句. (3认同)