什么时候调用Control.DestroyHandle?

时间:2008-09-04 11:03:05

标签: .net winforms

什么时候打电话?更具体地说,我有一个我正在创建的控件 - 如何在窗口关闭时释放句柄。在正常的win32中我会在wm_close期间执行此操作 - 是DestroyHandle .net等价物吗?


我不想自己销毁窗口句柄 - 我的控件正在侦听另一个对象上的事件,当我的控件被销毁时,我想停止听这些事件。例如:

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

2 个答案:

答案 0 :(得分:3)

通常在DestroyHandle方法中调用Dispose。因此,您需要确保处置所有控件以避免资源泄漏。

答案 1 :(得分:2)

Dispose会调用DestroyHandle,但并非总是如此。如果我关闭父窗口,则Windows将销毁所有子窗口。在这种情况下,Dispose将不会调用DestroyHandle(因为它已被销毁)。换句话说,调用DestroyHandle来销毁窗口,当窗口被销毁时不会调用它。

解决方案是覆盖OnHandleDestroyedDispose。我选择Dispose