2013-12-14 37 views
0

我想知道是否有可能執行一些C#代碼時,對象被破壞?.NET對象被銷燬時收到通知?

我試圖使用IDiposable,但我的Dispose方法沒有被調用。

謝謝。

+4

你想完成什麼?你是否需要更積極地控制對象資源的生命週期?這僅僅是爲了診斷嗎?您是否閱讀過C#析構函數上的http://msdn.microsoft.com/en-us/library/66x5fx1b.aspx? – reuben

+0

閱讀關於OOP,ctors,析構函數 –

+0

你可以使用finalizer(與問題最接近,但不太可能是你想要的)......當myObj = null被調用時,你無法得到通知......請解釋你實際上是在努力實現。 –

回答

0

你可以通過Garbage Collection Notification來做到這一點,它允許你在完整的垃圾收集正在接近時以及當完整的garbage collection has completed時感應和響應。

Garbage Collection Notifications

0

如果一個對象創建了一個終結一個類型的實例,一直到該實例的引用,不公開,提及任何人,那麼當舉辦的唯一參考的對象變爲符合回收,後一個對象的終結者將被排隊等待下一個機會。請注意,垃圾收集器不會運行終結器;它只是將可終結的對象添加到終結器應儘快運行的事物列表中。該清單上沒有任何物品,或任何其他擁有直接或間接強有力參考的物品,都將有資格收集,直到其停止在該清單上。如果您的可終結對象沒有持有對該對象的引用的引用,並且該另一個對象沒有自己的終結器,那麼一旦沒有引用對象,該對象就會停止存在;在後一個對象的終結器運行時,前一個對象將不再存在。