作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这样的情况:
var retrievalTasks = new Task[2];
retrievalTasks[0] = GetNodesAsync();
retrievalTasks[1] = GetAssetsToHandleAsync();
Task.WaitAll(retrievalTasks);
我希望 retrievalTasks[0]
和 retrievalTasks[1]
的结果存储在变量中。
我可以通过以下方式实现:
var a = await GetNodesAsync();
var b = await GetAssetsToHandleAsync();;
但我宁愿不要这样等待,因为那样他们就不会同时被解雇,对吧?还是我误会了?
我已将此作为引用:Awaiting multiple Tasks with different results
但我认为这是一个稍微不同的场景,不适用于我的情况。
有什么想法吗?
谢谢
编辑:
await Task.WhenAll(catTask, houseTask, carTask);
var cat = await catTask;
var house = await houseTask;
var car = await carTask;
这似乎只是等待了四次才能获得三个结果。但是,@armenm 已经展示了如何避免这种情况。
最佳答案
在这里,您需要为具有各自类型的任务设置单独的变量:
var task1 = GetNodesAsync();
var task2 = GetAssetsToHandleAsync();
Task.WaitAll(new Task[] { task1, task2 });
var result1 = task1.Result;
var result2 = task2.Result;
但我建议将其设为异步:
var task1 = GetNodesAsync();
var task2 = GetAssetsToHandleAsync();
await Task.WhenAll(new Task[] { task1, task2 });
var result1 = task1.Result;
var result2 = task2.Result;
关于c# - 如何将 WaitAll 任务的结果分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50794983/
我是一名优秀的程序员,十分优秀!