【发布时间】:2020-05-12 17:33:23
【问题描述】:
我有一个简单的foreach 循环(如下所示),它遍历集合并进行异步 API 调用以根据当前迭代器值获取数据。
foreach (var group in groups)
{
var usersInGroup = await this.tableauService.GetUsersInTableauGroup(group.Id);
// do work with `usersInGroup`
}
我不想每次迭代都调用 API,而是想为每个 API 调用创建一个异步任务并同时执行它们,结果填充一个由group.Id 键入的字典。这可能吗?
在我的脑海中,代码看起来像:
IList<Task<string[]>> tasks = new List<Task<string[]>>();
IDictionary<string, string[]> dictionary = new Dictionary<string, string[]>();
foreach (var group in groups)
{
tasks.Add(this.tableauService.GetUsersInTableauGroup(group.Id));
// Somehow define callback of each task to hydrate dictionary
}
await Task.WhenAll(tasks);
【问题讨论】:
标签: c# .net asp.net-core .net-core