Task.WhenAll - 何时使用此功能

Roc*_*art 1 c# multithreading task task-parallel-library

我知道Task.WaitAll(Task1,Task2)等待所有提供的Task对象完成执行.

什么是Task.WhenAll用于什么?

任务.当MSDN中的所有人

创建将在所有提供的任务完成后完成的任务.

什么是真实世界场景,曾经可以应用Task.WhenAll()

i3a*_*non 8

WaitAll阻塞调用线程,同时WhenAll提供一个promise任务,您可以使用它来异步等待使用async-await而不会在此期间浪费线程:

async Task ProcessAsync()
{
    await Task.WhenAll(DownloadAsync(), IntializeParserAsync(),...);
}
Run Code Online (Sandbox Code Playgroud)

您应该WhenAll在不必阻塞线程的情况下使用您想要等待的地方,从而提高可伸缩性.(阅读:几乎可以在任何地方)