一尘不染

等待具有不同结果的多个任务

c#

我有3个任务:

private async Task<Cat> FeedCat() {}
private async Task<House> SellHouse() {}
private async Task<Tesla> BuyCar() {}

它们都需要先运行,然后我的代码才能继续,并且我还需要它们的结果。没有结果有什么共同点

如何调用并等待3个任务完成然后获得结果?


阅读 374

收藏
2020-05-19

共1个答案

一尘不染

使用完后WhenAll,您可以使用以下命令分别提取结果await

var catTask = FeedCat();
var houseTask = SellHouse();
var carTask = BuyCar();

await Task.WhenAll(catTask, houseTask, carTask);

var cat = await catTask;
var house = await houseTask;
var car = await carTask;

您也可以使用Task.Result(因为到目前为止,您已经知道它们都已成功完成)。但是,我建议使用,await因为它显然是正确的,而Result在其他情况下可能会引起问题。

2020-05-19