【发布时间】:2020-02-04 21:50:22
【问题描述】:
我想创建一个通用方法来等待一系列任务按顺序完成,检索每个任务的结果。这是我创建的代码:
public static class TaskMixin
{
public static async Task<IEnumerable<T>> AwaitAll<T>(this IEnumerable<Task<T>> tasks)
{
var results = new List<T>();
foreach (var t in tasks)
{
results.Add(await t);
}
return results;
}
}
有更好的或内置的方法吗?
通知
在编写上述方法之前,我尝试过使用内置的Task.WhenAll 方法,但这给我带来了麻烦,因为这些任务使用的是实体框架的DbContext,而且它们似乎是同时运行的。
这是我使用Task.WhenAll时遇到的异常。
第二个操作在前一个上下文之前开始 异步操作完成
【问题讨论】:
标签: c# .net concurrency async-await