当异步代码有多个需要等待的对象时,我如何返回单个Task对象



我想从启动几个异步执行的方法中返回一个可await的Task。我该怎么做?

public async Task DoThingsAsync() {
List<Task> tasks = new List<Task>();
tasks.Add(DoAsync());
tasks.Add(DoAsync());
tasks.Add(DoSomethingElseAsync());
return WHAT_CAN_GO_HERE(tasks);
}

从方法中删除async并返回Task.WhenAll:的结果

public Task DoThingsAsync() {
List<Task> tasks = new List<Task>();
tasks.Add(DoAsync());
tasks.Add(DoAsync());
tasks.Add(DoSomethingElseAsync());
return Task.WhenAll(tasks);
}

如果实际代码中隐藏着await,那么您可以将asyncawait Task.WhenAll(tasks);保留在该方法中。然后当然只返回return;,而不是返回任何内容,因为这就是async Task(而不是Task<T>(方法所做的

最新更新