2012-10-19 58 views
2

我想弄清楚以下情況是否會產生內存泄漏。正確的方式來處置Hwnd IntPtr

我從WebBrowser控件獲得一個窗口句柄(還有一個原因)是

IntPtr p = webBrowser1.FindForm().Handle; 

後來,我釋放該句柄在一個重寫的Dispose方法

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

有我的Dispose方法後面可能導致內存泄漏的東西邪惡?

這對一些人來說可能是非常明顯的,但我正在尋找內存泄漏,所以我試圖驗證每一行代碼。

+0

我想,你的代碼只是將主窗口句柄(包含web瀏覽器控件)的本地副本設置爲零。那不會處理wbc。處理你的表單應該很好。 –

+0

瀏覽器不需要在這裏處理。它在表單處理完成時完成。 – iCantSeeSharp

回答

7

將HWND設置爲IntPtr.Zero沒有任何意義。

IntPtr是一個值類型,所以讓該變量中的值對任何東西都沒有影響。它不保留任何對象。這只是一個數字,你設置爲0.

如果你從現有窗口獲得HWND,那麼沒有句柄應該被複制,你不必釋放它。當表格關閉時,HWND將被破壞。

相關問題