在Asp.net Core中并行运行异步等待任务


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);
}

我想同时启动两个长期运行的任务(employees和Events(。那么,也许我们可以对上面的每个帐户实现并行执行来解决这个问题吗?

如果您只希望循环内的每个调用都是并行的-

List<Employee> employeeList = new List<Employee>();
List<Event> eventList = new List<Event>();
foreach (var account in accounts)
{
var context = await GetContext(account);
var employeesTask = _employeeService.List(context);
var eventsTask = _eventService.List(context);
await Task.WhenAll(employeesTask , events).ConfigureAwait(false);
var employees = await employeesTask.ConfigureAwait(false);
var events= await eventsTask.ConfigureAwait(false);    
employeeList.AddRange(employees);
eventList.AddRange(events);
}

最新更新