首页 > 解决方案 > 如果使用 ConfigureAwait(false),异步/等待仍然会死锁吗?

问题描述

根据此链接,在特定情况下,异步/等待可能会发生死锁。

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

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

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

标签: c#async-awaitdeadlock

解决方案


如果将要完成的任何事情task或任何进一步的嵌套操作已经捕获了您当前的上下文,如果该上下文绑定到特定线程,它仍然可能死锁 - 因为您正在GetResult 使用该线程进行调用并阻塞,使其无法被其他人使用仍然使用。

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


推荐阅读