【问题标题】:Library type remote web service calls and HttpClient ConfigureAwait(false)库类型远程 Web 服务调用和 HttpClient ConfigureAwait(false)
【发布时间】:2013-05-10 23:13:20
【问题描述】:

假设您正在创建一个库以在多个应用程序之间共享,其中一些应用程序可能作为完全同步的代码库存在。该库的目的是使用 HttpClient 使用异步等待执行 Web 服务调用。

鉴于这种情况类似于

var client = new HttpClient(....) { .... }
var response = await client.GetAsync("Users/").ConfigureAwait(false);

所有异步等待的使用都应该包括ConfigureAwait(false)的使用吗?

在包含该错误设置之前,此代码在同步应用程序中使用时似乎会死锁。

【问题讨论】:

    标签: c# asp.net httpclient deadlock async-await


    【解决方案1】:

    是的,您应该在所有库代码中包含ConfigureAwait。我不建议在 async 方法上进行同步阻塞,但如果你一直使用 ConfigureAwait 是可行的。

    作为副作用,ConfigureAwait 也会提高你的表现。

    我在on my bloga recent MSDN article 中详细描述了为什么这样做。

    【讨论】:

    • 谢谢斯蒂芬,我发现的资源引导我使用 ConfigureAwait 来修复死锁或任何没有发生的混乱,我似乎推断我应该在图书馆的所有地方使用它,但我尝试总是有明确的参考,而不仅仅是我为什么做事的假设。
    猜你喜欢
    • 2014-06-24
    • 1970-01-01
    • 2014-11-20
    • 2011-07-05
    • 2014-03-14
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    相关资源
    最近更新 更多