库类型远程web服务调用和HttpClient ConfigureAwait(false)
本文关键字:ConfigureAwait HttpClient false 调用 类型 web 服务 | 更新日期: 2023-09-27 18:13:13
假设您正在创建一个库,以便在多个应用程序之间共享,其中一些应用程序可能作为完全同步的代码库存在。这个库的目的是使用HttpClient
使用async await执行web服务调用。
给定类似于
的场景var client = new HttpClient(....) { .... }
var response = await client.GetAsync("Users/").ConfigureAwait(false);
所有异步等待的使用是否应该始终包括ConfigureAwait(false)
的使用?
在包含该false设置之前,此代码在同步应用程序中使用时似乎会死锁。
是的,您应该在所有库代码中包含ConfigureAwait
。我不建议在async
方法上同步阻塞,但如果您始终使用ConfigureAwait
,这是可行的。
作为一个副作用,ConfigureAwait
也会提高你的性能。
我在我的博客和最近的MSDN文章中详细描述了为什么这样做。