如果使用 ConfigureAwait(false),async/await 是否仍会死锁?

Mat*_*zen 3 c# deadlock async-await

根据此链接,在特定情况下 async/await 可能会发生死锁。

但是,如果我ConfigureAwait(false)总是使用,还会发生死锁吗?

例如: task.ConfigureAwait(false).GetAwaiter().GetResult()

代替: task.GetAwaiter().GetResult()

Dam*_*ver 5

如果将要完成的task任何内容或任何进一步的嵌套操作捕获了您当前的上下文,如果该上下文与特定线程相关联,它仍然可能会死锁- 因为您正在GetResult 使用该线程进行调用并阻塞,使其其他人无法使用还在用。

只需使用await. 它await可以释放您当前的上下文。