簡單的問題...刪除(),清除()或處置()
我有控制,用戶可以在運行時在我的窗體上拖動。而且他們也可以刪除它們......我應該在他們點擊刪除按鈕時撥打.Dispose();
,還是應該像panel1.Controls.Clear(Control);
那樣做? ...或者是其他東西?
謝謝:)
巴爾
簡單的問題...刪除(),清除()或處置()
我有控制,用戶可以在運行時在我的窗體上拖動。而且他們也可以刪除它們......我應該在他們點擊刪除按鈕時撥打.Dispose();
,還是應該像panel1.Controls.Clear(Control);
那樣做? ...或者是其他東西?
謝謝:)
巴爾
你應該從父刪除控件集合在達林季米特洛夫的反應描述,並且還調用Dispose:
panel.Controls.Remove(someControlInstance);
someControlInstance.Dispose();
你應該總是調用Dispose實現IDisposable的,當你與他們完成的對象,因此他們擁有的任何非託管資源將立即釋放。
只是刪除從面板控制:
panel.Controls.Remove(someControlInstance);
一旦有到它不再引用,它會受到垃圾收集和非託管資源將妥善處置。
「以垃圾收集爲準」......所以,一旦應用程序退出,它就會被處理掉?如果我能以某種方式將其從面板控件中刪除後立即處理它,它會有所作爲(性能明智)嗎?附:感謝您的回答:) – 2010-02-06 16:08:04
它不會在應用程序退出時丟棄,但當垃圾收集器運行時,它是不確定的。 – 2010-02-06 16:11:06
當GC決定並且可能會在應用程序運行的中間以及最終發生時處理它。這裏的區別在於,如果顯式調用Dispose(),則會執行對象終止,並且在下次運行時,GC將清除對象的內存,否則在首次運行時,GC會將該對象放入終止隊列並在另一次運行時清除其內存。更多關於這裏的話題:http://msdn.microsoft.com/en-us/library/ms973837.aspx – 2010-02-06 16:21:00
正是我希望聽到的。非常感謝喬。 – 2010-02-06 17:51:51