2

这叫什么时候?更具体地说,我有一个正在创建的控件 - 关闭窗口时如何释放句柄。在正常的 win32 中,我会在wm_close- DestroyHandle.net 等效吗?


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

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

2 回答 2

3

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

于 2008-09-04T11:17:30.790 回答
2

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

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

于 2008-09-04T11:55:20.763 回答