Я написал 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? Благодаря!
Зачем вам вообще нужно закрыть документ? Разве это не тот документ, который вы хотите отобразить в браузере? Кстати, установка локальной переменной в значение null здесь не имеет значения. –
Я полагаю, что нет. Я предполагаю, что есть ссылка на эти .js-файлы, и поэтому они не падают, когда страница закрыта. Вы правы, изменений нет, если я не вызываю document.close() или не устанавливаю документ в null. – Pete