我一直在使用 await 关键字,但我收到一条错误消息,指出上一个操作未完成
Posted
技术标签:
【中文标题】我一直在使用 await 关键字,但我收到一条错误消息,指出上一个操作未完成【英文标题】:I am using always the await keyword, but I get an error that says that the previous operation didn't complete 【发布时间】: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,为什么会出现错误?
谢谢。
【问题讨论】:
带有await
s 的方法体是可以的。更有趣的是如何使用(调用)方法 - 可以注意到(1)方法是 async void
和(2)DbContext
是外部传递的。
【参考方案1】:
尝试将方法定义从 async void 更改为 async Task。在方法调用上添加 await 也很重要。
【讨论】:
以上是关于我一直在使用 await 关键字,但我收到一条错误消息,指出上一个操作未完成的主要内容,如果未能解决你的问题,请参考以下文章