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

Par*_*ane -1 c# async-await 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);
}
Run Code Online (Sandbox Code Playgroud)

我想同时启动两个长时间运行的任务(员工和事件)。那么我们是否可以实现上述每个账户的并行执行来解决这个问题呢?

Nik*_*til 5

如果您只想循环内的每个调用并行 -

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);
}
Run Code Online (Sandbox Code Playgroud)