会在依赖注入对象上调用 dispose 吗?
Will be dispose called on dependency injection object?
我担心,如果 GC
将在 IDisposable
参数上调用 dispose 方法传递给在 using() {}
语句中创建的对象。
HttpClient
和
HTTPHttpClientHandler
是IDisposable
类。
var handler = new HttpClientHandler();
using (var client = new HttpClient(handler))
{
}//1
//1 此时GC会调用客户端的dispose()
方法。
这是否意味着,dispose()
方法也会在 handler
上调用?
是的。
如果您查看 HttpClient.Dispose()
的代码,它会调用 base.Dispose()
,它会执行以下操作:
this.handler.Dispose();
其中 handler
是 HttpMessageHandler
和 HttpClientHandler : HttpMessageHandler
.
的实例
此外,如果您 运行 按原样编写代码,一旦 using 块完成,您将看到 handler.disposed
设置为 true(使用 Visual Studio).
我担心,如果 GC
将在 IDisposable
参数上调用 dispose 方法传递给在 using() {}
语句中创建的对象。
HttpClient
和
HTTPHttpClientHandler
是IDisposable
类。
var handler = new HttpClientHandler();
using (var client = new HttpClient(handler))
{
}//1
//1 此时GC会调用客户端的dispose()
方法。
这是否意味着,dispose()
方法也会在 handler
上调用?
是的。
如果您查看 HttpClient.Dispose()
的代码,它会调用 base.Dispose()
,它会执行以下操作:
this.handler.Dispose();
其中 handler
是 HttpMessageHandler
和 HttpClientHandler : HttpMessageHandler
.
此外,如果您 运行 按原样编写代码,一旦 using 块完成,您将看到 handler.disposed
设置为 true(使用 Visual Studio).