2008-10-22 45 views
2

有沒有人有正確使用dispose和IDisposable的好文章或教程。我試圖向一些初級開發人員解釋這一點,並希望獲得一些額外的材料,示例等。Winforms處置IDisposable

回答

1

許多較舊的意見來源意味着IDisposable以某種方式鏈接到終結器。密切關注Herb Sutter對這個問題的評論。如果你實現了IDisposable,那麼不要試圖得出你需要編寫終結器的結論,以「確保Dispose最終運行,以防客戶端忘記調用它」。這通常不是這種情況。一個類可以實現IDisposable,以便它可以對它擁有的被管理對象進行各種調用,例如,依次處理這些對象。這從終結器完成是毫無意義的,因爲終結器不能可靠地訪問其他管理對象。此外,終結者所做的任何事情都必須能夠從任何線程中調用。終結者是一個非常模糊的先進事物,而IDisposable是一個應該無處不在的簡單模式。 SafeHandle changes the situation further的問世。

0

告訴他們總是使用using語句一次性的對象。

using (MyDisposable obj = new MyDisposable()) 
{ 
    obj.some_stuff(); 

} //obj is disposed here