我一直在使用 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,为什么会出现错误?

谢谢。

【问题讨论】:

带有awaits 的方法体是可以的。更有趣的是如何使用(调用)方法 - 可以注意到(1)方法是 async void 和(2)DbContext 是外部传递的。 【参考方案1】:

尝试将方法定义从 async void 更改为 async Task。在方法调用上添加 await 也很重要。

【讨论】:

以上是关于我一直在使用 await 关键字,但我收到一条错误消息,指出上一个操作未完成的主要内容,如果未能解决你的问题,请参考以下文章

我在 csound 中收到一条错误消息,但我不知道为啥

运行“npm run build”时,我收到一条错误消息“无法识别‘CI’”

如何在 python lambda 中使用 await

如何在 python lambda 中使用 await

我想在进行更新查询时选择一个表,但我收到错误代码 1093

Angular--同步和异步操作(async和await关键字)