2015-09-28 66 views
1

我需要將一次性對象存儲爲類成員。這是一次性使用的HttpClient,我可以手動配置它,或者將它放入(var client = new ....)。現在想象一下這種情況:刪除或處理一次性類

public class Session 
{ 
    private HttpClient m_httpClient; 

    public Session() 
    { 
     m_httpClient = new HttpClient(); 
    } 
} 

我該如何處置HttpClient?垃圾收集器在刪除會話時是否也會處理一次性的HttpClient? C++中有析構函數。在C#中它不是必需的。我是否應該讓會議對象也是一次性的?謝謝。

+0

您可以用'使用()'這樣的情況 –

+2

通常,如果你有需要配置爲實例字段的資源,你的類應該實現'IDisposable',並且在處理容器時在域上調用Dispose。 –

+0

請參閱:http://stackoverflow.com/questions/15705092/do-httpclient-and-httpclienthandler-have-to-be-disposed – PaulF

回答

4

你應該通過在你的類上實現IDisposible來處理這個問題,垃圾回收器不會自動處理這個對象。

的簡化版本低於,但檢查this article for the best practicethis question & answer

public class Session : IDisposible 
{ 
    private HttpClient m_httpClient; 

    public Session() 
    { 
     m_httpClient = new HttpClient(); 
    } 

    public void Dispose() 
    { 
     m_httpClient.Dispose(); 
    } 
}