C# 重用';HttpClient';在静态类中有效地

C# 重用';HttpClient';在静态类中有效地,c#,.net,static,.net-4.0,httpclient,C#,.net,Static,.net 4.0,Httpclient,我正在每个静态请求方法中重新创建一个HttpClient实例,但是(在大多数情况下)最好重用HttpClient实例 在静态类中重用HttpClient实例的首选/推荐方法是什么?由于您的请求方法是静态的,因此HttpClient还必须是类的静态成员才能重用(或其他类似的方法) 您还可以决定在此处添加更多抽象,例如,使用私有静态getter方法,而不是获取静态字段;这允许您集中决定是应该重用HttpClient,还是在每次调用的基础上返回另一个实例。由于您的请求方法是静态的,因此HttpClie

我正在每个静态请求方法中重新创建一个
HttpClient
实例,但是(在大多数情况下)最好重用
HttpClient
实例


在静态类中重用
HttpClient
实例的首选/推荐方法是什么?

由于您的请求方法是静态的,因此
HttpClient
还必须是类的
静态成员才能重用(或其他类似的方法)


您还可以决定在此处添加更多抽象,例如,使用
私有静态
getter方法,而不是获取
静态
字段;这允许您集中决定是应该重用
HttpClient
,还是在每次调用的基础上返回另一个实例。

由于您的请求方法是静态的,因此
HttpClient
也必须是类的
静态
成员才能重用(或某种道德上的等价物)


您还可以决定在此处添加更多抽象,例如,使用
私有静态
getter方法,而不是获取
静态
字段;这允许您集中决定是应该重用
HttpClient
,还是在每次调用的基础上返回另一个实例。

我的理解是,您可以初始化HTTP客户端并重用该实例,只要您公开调用它,它将是线程安全的。请参阅此处的线程安全部分 如果每次创建一个新的HTTPClient调用,您所做的就是打开多个套接字。 这篇文章(以及相关评论)非常简洁地讨论了这个话题。

我的理解是,您可以初始化HTTP客户端并重用该实例,只要您公开调用它,它将是线程安全的。请参阅此处的线程安全部分 如果每次创建一个新的HTTPClient调用,您所做的就是打开多个套接字。 这篇文章(以及相关评论)非常简洁地讨论了这个话题。

这不是一个危险的答案吗?我的理解是,私下调用HttpClient不是线程安全的?我的理解是,你要么静态地称它,要么在类级别上称它,但总是公开的。这不是一个危险的答案吗?我的理解是,私下调用HttpClient不是线程安全的?我的理解是,你要么静态地调用它,要么在类级别调用它,但总是公开的。