首页 > 解决方案 > 从后台任务创建集合

问题描述

我有一个 C# Web 服务,其中有一个名为“async GetUser(string userid)”的方法。在我的一种方法中,我有一组用户 ID。我想做的是这样的:

ICollection<User> users = /* Run GetUser(userid) for each userid concurrently*/

在我习惯的其他语言中,比如 Go,我会做的是在后台运行所有“func”,并让它们中的每一个推送到通道并简单地收集数据,直到所有后台作业完成。

在 C# 中执行此操作的正确方法是什么?

标签: c#task

解决方案


ICollection<User> users = await Task.WhenAll(userids.Select(GetUser));

SelectGetUser为每个 id运行并返回一个Task<User>.

Task.WhenAll等待所有任务完成,并将await结果解包到一个数组中。


推荐阅读