且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

控制器进行并行调用时如何等待结果

更新时间:2023-01-18 14:07:30

Parallel.ForEach不适用于async动作,但是您可以启动所有任务,然后使用Task.WhenAll等待它们全部完成:

Parallel.ForEach doesn't work with async actions, but you could start all tasks and then wait for them all to complete using Task.WhenAll:

[HttpPost]
public async Task<IHttpActionResult> GetAccountsAsync(IEnumerable<int> accountIds)
{
    Task<List<AccountDetail>>[] tasks = accountIds.Select(accountId => GetAccountDetailAsync(accountId)).ToArray();
    List<AccountDetail>[] results = await Task.WhenAll(tasks);
    return Ok(results.SelectMany(x => x).ToList());
}