[英]Can I safely use Task.Wait when SynchronizationContext.Current is null?
当SynchronizationContext.Current为null时,为什么不100%安全地调用Task.Wait()和Task.Result?
我有一个多线程但同步的服务。 我用对HttpClient.PostAsXmlAsync的调用替换了同步方法之一。 该实现使用.Result将其转换为同步方法,以避免更改整个项目。 但是,我们得到了典型的死锁问题,这些问题已得到充分记录。
我不明白如果没有同步上下文,怎么会有死锁。
方法HttpClient.PostAsXmlAsync
是在后台执行HttpClient.SendAsync
扩展方法。 SendAsync
方法是异步方法。
因此,您以“同步”方式调用异步方法-正如您自己所注意到的那样,这导致记录在案的死锁。
...将其转换为同步方法,以避免更改整个项目
为避免将整个应用程序管道更改为async
-请勿使用async
。
async-await
是一种僵尸病毒,在您开始使用它时便会遍及您的应用程序:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.