什么时候打电话?更具体地说,我有一个我正在创建的控件 - 如何在窗口关闭时释放句柄。在正常的win32中我会在wm_close
期间执行此操作 - 是DestroyHandle
.net等价物吗?
我不想自己销毁窗口句柄 - 我的控件正在侦听另一个对象上的事件,当我的控件被销毁时,我想停止听这些事件。例如:
void Dispose(bool disposing) {
otherObject.Event -= myEventHandler;
}
答案 0 :(得分:3)
通常在DestroyHandle
方法中调用Dispose
。因此,您需要确保处置所有控件以避免资源泄漏。
答案 1 :(得分:2)
Dispose
会调用DestroyHandle
,但并非总是如此。如果我关闭父窗口,则Windows将销毁所有子窗口。在这种情况下,Dispose
将不会调用DestroyHandle
(因为它已被销毁)。换句话说,调用DestroyHandle
来销毁窗口,当窗口被销毁时不会调用它。
解决方案是覆盖OnHandleDestroyed
或Dispose
。我选择Dispose
。