C# Task.WhenAll-何时使用此
我知道(Task1、Task2)会等待所有提供的任务对象完成执行 Task.Wheall的用途是什么 在MSDN中说 创建一个任务,该任务将在提供的所有任务完成后完成 完成C# Task.WhenAll-何时使用此,c#,multithreading,task-parallel-library,task,C#,Multithreading,Task Parallel Library,Task,我知道(Task1、Task2)会等待所有提供的任务对象完成执行 Task.Wheall的用途是什么 在MSDN中说 创建一个任务,该任务将在提供的所有任务完成后完成 完成 在现实世界中,once可以应用Task。WhenAll()WaitAll阻止调用线程,而WhenAll提供一个promise任务,您可以使用它来使用async wait异步等待等待,而不会同时浪费线程: async Task ProcessAsync() { await Task.WhenAll(DownloadAs
在现实世界中,once可以应用Task。WhenAll()
WaitAll
阻止调用线程,而WhenAll
提供一个promise任务,您可以使用它来使用async wait
异步等待等待,而不会同时浪费线程:
async Task ProcessAsync()
{
await Task.WhenAll(DownloadAsync(), IntializeParserAsync(),...);
}
您应该在任何需要等待的地方使用
whalll
,而不必阻塞线程,这样可以提高可伸缩性。(阅读:几乎可以在任何地方)WaitAll
阻止调用线程,而whalll
提供了一个承诺任务,您可以使用异步等待异步等待而不会同时浪费线程:
async Task ProcessAsync()
{
await Task.WhenAll(DownloadAsync(), IntializeParserAsync(),...);
}
您应该在任何需要等待的地方使用whalll
,而不必阻塞线程,这样可以提高可伸缩性。(阅读:几乎可以在任何地方)WaitAll
是一个void
函数,它允许您的代码在调用它时立即等待多个任务的完成
另一方面,whalll
生成一个任务
,该任务将在运行时等待其他任务。例如,如果您正在构建一个任务
,该任务需要初始化几件事情,然后运行一些计算,您可以这样做:
var initThenRun = Task
.WhenAll(initTask1, initTask2, initTask3)
.ContinueWith(computationTask);
现在,initThenRun
任务将运行这三个初始化任务,等待它们全部完成,然后再继续执行computationTask
WaitAll
是一个void
函数,它允许您的代码在调用它时立即等待多个任务的完成
另一方面,whalll
生成一个任务
,该任务将在运行时等待其他任务。例如,如果您正在构建一个任务
,该任务需要初始化几件事情,然后运行一些计算,您可以这样做:
var initThenRun = Task
.WhenAll(initTask1, initTask2, initTask3)
.ContinueWith(computationTask);
现在,initThenRun
任务将运行三个初始化任务,等待它们全部完成,然后再继续执行computationTask
,那么task.Factory.continuewhalll(新任务[]{initTask1,initTask2,initTask3},computationTask)
@KevinBui,因为这是一个不同的问题,把它当作一个问题,而不是一个评论。这将使你的问题更加直观,潜在地导致更好的答案。因此,与<代码>任务>工厂。ContinueWhenAll(新任务[]{IITTASK1,IITTASK2,IITTASK3},计算任务)< /代码> @ KevinBui,因为这是一个不同的问题,考虑把它作为一个问题,而不是作为一个评论。这将使您的问题更具可视性,有可能得到更好的答案。