На самом деле там подобная универсальная перегрузка:
Task all = Task.WhenAll(tasks)
Это отличается в этом, это возвращается Task
, который завершится после всех выполненных задач. таким образом, можно использовать await
на нем, или Wait()
, независимо от того, что Вы хотите.
Взгляд на подпись:
Перегрузки
---------НЕ УНИВЕРСАЛЬНЫЕ ПЕРЕГРУЗКИ--------------
WhenAll(IEnumerable<Task>)
Создают задачу, которая завершится, когда весь изTask
объекты в счетном наборе завершился.
WhenAll(Task[])
Создает задачу, которая завершится, когда весь изTask
объекты в массиве завершился.--------- УНИВЕРСАЛЬНЫЕ ПЕРЕГРУЗКИ --------------
WhenAll<TResult>(IEnumerable<Task<TResult>>)
Создает задачу, которая завершится, когда весь изTask<TResult>
объекты в счетном наборе завершился.
WhenAll<TResult>(Task<TResult>[])
Создает задачу, которая завершится, когда весь изTask<TResult>
объекты в массиве завершился.