问题是这样的:
EF不支持通过相同的DbContext对象处理多个请求.如果同一个DbContext实例上的第二个异步请求在第一个请求完成之前启动(这就是整点),那么您将收到一条错误消息,指出您的请求正在处理打开的DataReader.
资料来源:https://visualstudiomagazine.com/articles/2014/04/01/async-processing.aspx
您需要将代码修改为以下内容:
async Task> GetE1Data() { using(var MyCtx = new MyCtx()) { return await MyCtx.E1.Where(bla bla bla).ToListAsync(); } } async Task
> GetE2Data() { using(var MyCtx = new MyCtx()) { return await MyCtx.E2.Where(bla bla bla).ToListAsync(); } } async Task DoSomething() { var t1 = GetE1Data(); var t2 = GetE2Data(); await Task.WhenAll(t1,t2); DoSomething(t1.Result, t2.Result); }