2015-10-07 60 views
0

我關心的是,如果GC將調用IDisposable參數傳遞給using() {}語句中的對象創建的處理方法。將配置調用依賴注入對象嗎?

HttpClient 

HTTPHttpClientHandler 

IDisposable類。

var handler = new HttpClientHandler(); 
using (var client = new HttpClient(handler)) 
{ 
}//1 

// 1在這一點上GC將在客戶端調用dispose()方法。 這是否意味着dispose()方法也會被調用handler呢?

回答

0

是的。

如果爲HttpClient.Dispose()查看代碼,它調用base.Dispose()其執行以下操作:

this.handler.Dispose();其中handlerHttpMessageHandlerHttpClientHandler : HttpMessageHandler一個實例。另外,如果您運行的代碼是按原樣編寫的,則一旦使用塊完成,您將看到handler.disposed設置爲true(使用Visual Studio中的調試器)。