.NET Framework 4.5 中的 HttpClient
和 HttpClientHandler
是否需要显式释放?
背景:
System.Net.Http.HttpClient
和 HttpClientHandler
在 .NET Framework 4.5 中实现了 IDisposable
接口。using
语句的文档建议在其内部声明和实例化可释放对象。然而,微软自己的示例经常省略了对这些类的 Dispose()
方法的调用。
问题 1:显式释放是否必要?
目前的共识是,对于 HttpClient
和 HttpClientHandler
,显式释放并非必要。包括 Darrel Miller(微软员工)在内的多位专家都证实了这一点。
问题 2:释放是否是一种良好的实践?
尽管不需要,但一些人认为,释放 IDisposable
对象仍然是一种良好的实践。但是,需要考虑性能影响。
问题 3:示例代码是否安全?
使用 using
语句的提供的代码在 .NET Framework 4.5 中通常被认为是安全的。但是,需要注意的是,在 .NET 4.5 中,异步和 using
语句有一些限制。
问题 4:为什么将这些类实现为 IDisposable?
HttpClient
和 HttpClientHandler
被实现为 IDisposable
以便于实现清理逻辑。但是,当前的实现没有任何要执行的清理操作。
问题 5:微软的示例是否具有误导性?
鉴于目前普遍认为对 HttpClient
和 HttpClientHandler
进行显式释放并非必要,微软的示例中没有 Dispose()
调用的做法不被认为具有误导性,而只是遵循了跨多个请求重用这些类的推荐实践。
以上是我需要明确处理httpclient和httpclienthandler吗?的详细内容。更多信息请关注PHP中文网其他相关文章!