gpt4 book ai didi

c# - 在c#中异步并行加载多个变量的最优雅方法是什么

转载 作者:太空狗 更新时间:2023-10-29 17:50:19 25 4
gpt4 key购买 nike

这最好用一个例子来说明。

假设我想在网络请求开始时从数据库中加载多条记录。我想异步提取所有必要的数据。我 可能有这样的东西:

var user = await Database.GetUser(userId);
var group = await Database.GetGroup(groupId);
var members = await Database.GetGroupMembers(groupId);

现在假设我想并行加载这些数据。突然间,这个清晰/干净的异步代码变得有点困惑。

var userTask = Database.GetUser(userId);
var groupTask = Database.GetGroup(groupId);
var membersTask = Database.GetGroupMembers(groupId);

await Task.WhenAll(userTask, groupTask, membersTask);

var user = userTask.Result;
var group = groupTask.Result;
var members = membersTask.Result;

有没有更好、更简洁的方法来实现这一目标?

最佳答案

将任务开始和await分开:

var userTask = Database.GetUser(userId);
var groupTask = Database.GetGroup(groupId);
var membersTask = Database.GetGroupMembers(groupId);

var user = await userTask;
var group = await groupTask;
var members = await membersTask;

关于c# - 在c#中异步并行加载多个变量的最优雅方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46235160/

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