2008-09-04 71 views
2

這個叫什麼時候?更具體地說,我有一個我正在創建的控件 - 如何在窗口關閉時釋放手柄。在正常的win32中,我會在wm_close期間這樣做 - 是DestroyHandle .net相當於?何時調用Control.DestroyHandle?


我不想破壞窗口辦理自己 - 我的控制,監聽另一個對象的事件,在我的控制被破壞,我想停下來聽這些事件。例如:

void Dispose(bool disposing) { 
    otherObject.Event -= myEventHandler; 
} 

回答

3

通常DestroyHandle被稱爲在Dispose方法。所以你需要確保所有的控件都被放置以避免資源泄漏。

2

Dispose的確稱爲DestroyHandle,但並不總是如此。如果我關閉了父窗口,那麼Windows將銷燬所有的子窗口。在這種情況下,Dispose將不會呼叫DestroyHandle(因爲它已經被銷燬)。換句話說,調用DestroyHandle來銷燬窗口,窗口被銷燬時不會調用它。

解決方案是覆蓋OnHandleDestroyedDispose。我選擇Dispose

+0

出於好奇,你爲什麼要摧毀自己的手柄?在我的實踐中,我不記得一個案例,我需要明確調用DestroyHandle。你能解釋一下你的情況嗎? – aku 2008-09-04 12:08:59