0

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

鉴于这种情况类似于

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

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

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

4

1 回答 1

3

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

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

我在我的博客最近的 MSDN 文章中详细描述了为什么这样做。

于 2013-05-10T15:13:20.133 回答