我根據這個教程寫了一個BHO: http://www.codeproject.com/KB/cs/Attach_BHO_with_C_.aspxBHO內存泄露
我GetSite
和SetSite
是相同的教程上市。我正在添加/刪除OnDocumentComplete
處理程序並在IObjectWithSite
內部設置SHDocVW.WebBrowser webBrowser
SetSite函數
出於調試目的我已經刪除了除基本功能以外的所有內容。這是我的OnDocumentComplete
處理程序。
public void OnDocumentComplete(object pDisp, ref object URL)
{
if (true)
{
HTMLDocument document;
document = (HTMLDocument)webBrowser.Document;
/*need to do some stuff here to the doc*/
//then free up script references somehow?
}
return;
}
當我附上我的VS2008調試器的IE實例,我發現所有的加載.js文件,由各自的窗口後,堅持圍繞/分頁關閉。如果我將OnDocumentComplete中的條件設置爲false(或禁用我的BHO),泄漏消失。我需要在mshtml.HTMLDocument上做更多的清理工作嗎?謝謝!
爲什麼你需要關閉文檔?是不是你想要在瀏覽器中顯示的文檔?順便說一句,將局部變量設置爲null在這裏沒有任何區別。 – 2010-07-13 21:41:11
我想我不知道。我假設有一個參考掛在這些.js文件,這就是爲什麼他們沒有脫落關閉頁面時。你是對的,如果我不調用document.close()或將文檔設置爲null,則沒有改變。 – Pete 2010-07-13 22:06:35