每个应用程序使用一次 httpclient 与静态 httpclient

Using httpclient vs static httpclient once per application

我看了很多文档,看到了很多例子。但我没能准确理解哪种是使用 httpclient 的正确方法。我的应用程序在不同的线程和不同的 url 中多次使用 httpclient,并且在大多数情况下同时使用。 到目前为止,我在下面的每个请求中都使用 httpclient 作为示例。

using(var client = new HttpClient())
{
    client.TimeOut = TimeSpan.FromSeconds(20);
    var result = await client.GetAsync(www.mysite.com);
}

正如微软的文档所说“HttpClient 旨在为每个应用程序实例化一次,而不是每次使用” 我可以使用 httpclient 的静态实例吗?然后在不影响已经激活的 'GET' 请求的情况下发出请求?这样是不是更好?有人可以帮我解释一下吗?

我正在使用 winform 应用程序和 xamarin 应用程序。

你是对的,你应该为你的应用程序创建一个 HttpClient 实例,并在你的每个线程中使用它。一种流行的方法是使用单例模式。

在同一个应用程序中有多个 HttpClient 实例的情况是,如果您希望它们有不同的行为,例如,您可能想要一个有 cookie 存储而另一个没有。