【发布时间】:2017-07-24 11:42:32
【问题描述】:
我有这个代码:
private async void reasignarPiezasReservadas(DbContext paramDbContext)
{
try
{
string miStrTsql = "select...";
await paramDbContext.MyType.SqlQuery(miStrTsql).ToListAsync();
miStrTsql = "Select...";
await paramDbContext.Database.ExecuteSqlCommandAsync(miStrTsql);
}
}
使用此代码,我得到错误:{“在前一个异步操作完成之前,在此上下文上启动了第二个操作。使用“等待”确保在调用此上下文上的另一个方法之前已完成任何异步操作。任何实例成员不保证是线程安全的。"}
我在两个查询中都使用了 await。
如果在第一个查询中我使用 ToList() 而不是 ToListAsync(),那么我不会遇到问题。
但是,如果我在所有情况下都使用 await,为什么会出现错误?
谢谢。
【问题讨论】:
-
带有
awaits 的方法体是可以的。更有趣的是如何使用(调用)方法 - 可以注意到(1)方法是async void和(2)DbContext是外部传递的。
标签: c# entity-framework-6 async-await