在所有示例中,我都可以找到HttpClient
的用法,它用于一次性通话。但是,如果我有一个持久的客户端情况,可以同时进行多个请求怎么办?基本上,对client.PostAsync
的同一个实例同时在2个线程上调用HttpClient
是安全的。
我不是在寻找实验结果。作为一个工作示例可能只是一个侥幸(并且持久的),一个失败的例子可能是一个错误的配置问题。理想情况下,我正在寻找HttpClient中并发处理问题的一些权威答案。
答案 0 :(得分:135)
According to MSDN,自.NET 4.5以下实例方法是线程安全的(感谢@ischell):
CancelPendingRequests
DeleteAsync
GetAsync
GetByteArrayAsync
GetStreamAsync
GetStringAsync
PostAsync
PutAsync
SendAsync
答案 1 :(得分:87)
以下是来自Henrik F. Nielsen的关于HttpClient的另一个article,他说:
“默认的HttpClient是您开始发送请求的最简单方式。可以使用单个HttpClient同时发送任意数量的HTTP请求,因此在许多情况下您都可以可以只创建一个HttpClient,然后将其用于所有请求。“
答案 2 :(得分:15)
由Henrik F. Nielsen(HttpClient的主要建筑师之一)找到一个MSDN forum post。
快速摘要: