J'ai écrit un BHO basé sur ce tutoriel: http://www.codeproject.com/KB/cs/Attach_BHO_with_C_.aspxBHO fuite de mémoire
Mon GetSite
et SetSite
sont identiques aux tutoriels liste. J'ajoute/enlève un gestionnaire OnDocumentComplete
et j'affecte SHDocVW.WebBrowser webBrowser
à l'intérieur de la fonction SetSite IObjectWithSite
à des fins de débogage J'ai supprimé toutes les fonctionnalités de base. Voici mon gestionnaire 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;
}
Quand je joins mon débogueur VS2008 à une instance IE, je remarque tous les .js chargés sont autour après leurs coller fenêtres respectives/onglets sont fermés. Si je place le conditionnel dans OnDocumentComplete sur false (ou que je désactive mon BHO), la fuite disparaît. Y at-il plus de nettoyage que je dois faire sur le fichier mshtml.HTMLDocument? Merci!
Pourquoi avez-vous besoin de fermer le document? N'est-ce pas le même document que vous voulez afficher dans le navigateur? En passant, la définition d'une variable locale à null ne fait aucune différence ici. –
Je suppose que non. Je suppose qu'il ya une référence à ces fichiers .js et c'est pourquoi ils ne tombent pas lorsque la page est fermée. Vous avez raison, il n'y a pas de changement si je n'appelle pas document.close() ou que le document est défini sur null. – Pete