Kie*_*ran 1 c# asynchronous async-await
我有这样的情况:
var retrievalTasks = new Task[2];
retrievalTasks[0] = GetNodesAsync();
retrievalTasks[1] = GetAssetsToHandleAsync();
Task.WaitAll(retrievalTasks);
Run Code Online (Sandbox Code Playgroud)
而且我想的结果retrievalTasks[0],并retrievalTasks[1]存储在变量。
我可以通过以下方式实现这一目标:
var a = await GetNodesAsync();
var b = await GetAssetsToHandleAsync();;
Run Code Online (Sandbox Code Playgroud)
但我宁愿不那样等待,因为那样他们不会同时被解雇,对吗?还是我误会了?
我已经将此视为参考:Awaiting multiple Tasks with different results
但我认为这是一个稍微不同的场景,在我的情况下不起作用。
有任何想法吗?
谢谢
编辑:
await Task.WhenAll(catTask, houseTask, carTask);
var cat = await catTask;
var house = await houseTask;
var car = await carTask;
Run Code Online (Sandbox Code Playgroud)
这似乎只是等待了四次才能得到三个结果。但是,@armenm 已经展示了如何避免这种情况。
在这里,您需要为具有各自类型的任务设置单独的变量:
var task1 = GetNodesAsync();
var task2 = GetAssetsToHandleAsync();
Task.WaitAll(new Task[] { task1, task2 });
var result1 = task1.Result;
var result2 = task2.Result;
Run Code Online (Sandbox Code Playgroud)
但我建议使其异步:
var task1 = GetNodesAsync();
var task2 = GetAssetsToHandleAsync();
await Task.WhenAll(new Task[] { task1, task2 });
var result1 = task1.Result;
var result2 = task2.Result;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2087 次 |
| 最近记录: |