【发布时间】:2021-07-22 16:08:22
【问题描述】:
List<Employee> employeeList = new List<Employee>();
List<Event> eventList = new List<Event>();
//Wanted to execute each foreach call asynchronously, to improve performance
foreach (var account in accounts)
{
var context = await GetContext(account);
//following two await is depends on above result
var employees = await _employeeService.List(context);
var events = await _eventService.List(context).ConfigureAwait(false);
//Question is how to execute above two await calls parallely
employeeList.AddRange(employees);
eventList.AddRange(events);
}
我想同时启动两个长期运行的任务(员工和事件)。那么也许我们可以为上面的每个帐户实现并行执行来解决这个问题?
【问题讨论】:
-
await Task.WhenAll(accounts.Select(acc => doSomethingAsync(acc)).ToArray()) -
@PareshBijarane 在这种情况下,正确的术语是并发,而不是并行。你可以阅读更多关于这个here的信息。
标签: c# asp.net-core async-await