gpt4 book ai didi

c# - 如何将 WaitAll 任务的结果分配给变量

转载 作者:行者123 更新时间:2023-12-05 01:00:01 33 4
gpt4 key购买 nike

我有这样的情况:

var retrievalTasks = new Task[2];

retrievalTasks[0] = GetNodesAsync();

retrievalTasks[1] = GetAssetsToHandleAsync();

Task.WaitAll(retrievalTasks);

我希望 retrievalTask​​s[0]retrievalTask​​s[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/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com