4 回答
TA贡献1982条经验 获得超2个赞
使用完后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在其他情况下可能会引起问题。
TA贡献1798条经验 获得超3个赞
await全部启动后,仅将三个任务分开。
var catTask = FeedCat();
var houseTask = SellHouse();
var carTask = BuyCar();
var cat = await catTask;
var house = await houseTask;
var car = await carTask;
TA贡献1829条经验 获得超13个赞
如果您使用的是C#7,则可以使用这样的便捷包装方法...
public static class TaskEx
{
public static async Task<(T1, T2)> WhenAll<T1, T2>(Task<T1> task1, Task<T2> task2)
{
await Task.WhenAll(task1, task2);
return (task1.Result, task2.Result);
}
}
...当您想等待具有不同返回类型的多个任务时启用类似的方便语法。当然,您必须为等待不同数量的任务进行多次重载。
var (someInt, someString) = await TaskEx.WhenAll(GetIntAsync(), GetStringAsync());
TA贡献1864条经验 获得超2个赞
您可以将它们存储在任务中,然后等待它们:
var catTask = FeedCat();
var houseTask = SellHouse();
var carTask = BuyCar();
await Task.WhenAll(catTask, houseTask, carTask);
Cat cat = await catTask;
House house = await houseTask;
Car car = await carTask;
- 4 回答
- 0 关注
- 455 浏览
添加回答
举报