HttpClient和HttpClientHandler必须处理吗?
using
通常,当您使用IDisposable对象时,您应该在Using语句中声明并实例化它。
var baseAddress = new Uri("http://example.com");var cookieContainer = new CookieContainer();using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer })using (var client = new HttpClient(handler) { BaseAddress = baseAddress }){ var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("foo", "bar"), new KeyValuePair<string, string>("baz", "bazinga"), }); cookieContainer.Add(baseAddress, new Cookie("CookieName", "cookie_value")); var result = client.PostAsync("/test", content).Result; result.EnsureSuccessStatusCode();}
Dispose()
在检查了您的示例之后,我发现您没有对HttpClient实例执行Dispose操作。我在我的应用程序上使用了HttpClient的所有实例并使用了Use语句,并且我认为这是正确的方法,因为HttpClient实现了IDisposable接口。我在正确的道路上吗?
一般来说,这是正确的,尽管您必须小心使用“和”异步“,因为它们不是真正混合在.NET 4中,在.NET 4.5中,您可以在”使用“语句中使用”等待“。
顺便说一句,您可以像您喜欢的那样多次重用相同的HttpClient,所以通常不会一直创建/处理它们。
海绵宝宝撒