here から、Task.Whenall
のタスク実行順序は決定論的ではないことがわかりましたが、結果の順序に関する情報が見つかりません。
結果コレクションには、入力で順序付けられたタスクまたは結果を任意の順序で並べることができる順序で結果が含まれますか?
私が行ったテストから、注文は維持されているようですが、確認が必要です。
から [〜#〜] msdn [〜#〜] :
Task.WhenAll<TResult>(IEnumerable<Task<TResult>>)
これは、このステートメントを含む4つのオーバーロードのみです。
障害が発生したタスクがなく、キャンセルされたタスクもなかった場合、結果のタスクはRanToCompletion状態で終了します。返されたタスクの結果は、提供されたタスクのすべての結果を提供されたのと同じ順序で含む配列に設定されます(例:入力タスク配列にt1、t2、t3が含まれている場合、出力タスクの結果はTResult []を返します。ここで、arr [0] == t1.Result、arr 1 == t2.Result、およびarr [ 2] == t3.Result)。