2010-07-13 16 views
2

Я написал BHO на основе этого урока: http://www.codeproject.com/KB/cs/Attach_BHO_with_C_.aspxBHO утечку памяти

Мои GetSite и SetSite идентичны учебники листинга. Я добавляю/удаляет обработчик OnDocumentComplete и назначает SHDocVW.WebBrowser webBrowser внутри функции IObjectWithSite 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? Благодаря!

+1

Зачем вам вообще нужно закрыть документ? Разве это не тот документ, который вы хотите отобразить в браузере? Кстати, установка локальной переменной в значение null здесь не имеет значения. –

+0

Я полагаю, что нет. Я предполагаю, что есть ссылка на эти .js-файлы, и поэтому они не падают, когда страница закрыта. Вы правы, изменений нет, если я не вызываю document.close() или не устанавливаю документ в null. – Pete

ответ

Смежные вопросы