4

我试图弄清楚以下情况是否会产生内存泄漏。

我从 WebBrowser 控件获取窗口句柄(这是有原因的)

IntPtr p = webBrowser1.FindForm().Handle;

稍后,我将在重写的 dispose 方法中释放该句柄

    protected override void Dispose(bool disposing)
    {
        hwnd = IntPtr.Zero;
        base.Dispose(disposing);
    }

我的Dispose方法背后是否有一些邪恶的东西可能导致内存泄漏?

这对某些人来说可能很明显,但我正在寻找内存泄漏,所以我正在尝试验证每一行代码。

4

1 回答 1

8

将 HWND 设置为 IntPtr.Zero 没有任何意义。

IntPtr 是一种值类型,因此该变量中的值对任何内容都没有影响。它不会使任何对象保持活动状态。这只是一个您设置为 0 的数字。

如果您从现有窗口获得 HWND,则不应复制任何句柄,并且您不必释放它。当表单关闭时,HWND 将被销毁。

于 2012-10-19T18:37:30.147 回答