我偶然发现了GitHub上的一个问题(https://github.com/HTBox/allReady/issues/1313),他们讨论了如何从代码中取出ConfigureAwait(false)
,声称在 ASP.NET Core
对
ConfigureAwait(false)
的调用是多余的,不执行任何操作
我能在这里找到的最好的答案是答案(来自Stephen Cleary,https://stackoverflow.com/a/40220190/2805831)告诉
ASP.NET Core不再具有“上下文”
那么, ASP.NET Core 中是否真的没有ConfigureAwait(false)
(即使使用完整的.Net Framework)?在某些情况下,它在性能方面是否有任何实际的好处,或者在结果/语义方面是否有差异?
编辑:如果我将其作为控制台应用程序托管或在IIS中,它在这方面有所不同吗?
答案 0 :(得分:46)
ConfigureAwait
只对在ASP.NET核心没有的SynchronizationContext
上下文中运行的代码产生影响(ASP.NET“Legacy”会这样做。)
通用代码仍应使用它,因为它可能与SynchronizationContext
一起运行。
答案 1 :(得分:14)
这怎么办?
目前(2020年2月),MS Blog上的开发人员建议使用ConfigureAwait(false) 为了提高性能,避免死锁。 https://devblogs.microsoft.com/dotnet/configureawait-faq/
我听说.NET Core中不再需要ConfigureAwait(false)。 真正?假。在.NET Core上运行时,确实需要 在.NET Framework上运行时,需要同样的理由。没事 在这方面有所改变。