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