Задача. После получения результата

Я понимаю из здесь, что порядок выполнения задачи для Task.Whenall не является детерминированным, но я не могу найти никакой информации о порядке результата.

Будет ли сбор результатов содержать результаты в том порядке, в котором задачи, упорядоченные на входе или результаты, могут быть в любом порядке?

Из тестов, которые я сделал, он, похоже, сохраняет порядок, но мне нужно подтверждение.

Ответы

Ответ 1

От MSDN:

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

Это единственная перегрузка четырех, которая содержит это утверждение:

Если ни одна из задач не была выполнена, и ни одна из задач не была отменена, итоговая задача завершится в состоянии RanToCompletion. Результат возвращаемая задача будет установлена ​​в массив, содержащий все результаты поставленных задач в том же порядке, в каком они были предоставлены(например, если массив входных задач содержит t1, t2, t3, выходная задача Результат вернет TResult [], где arr [0] == t1.Result, arr 1 == t2.Result и arr [2] == t3.Result).