2010-07-13 11 views
2

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!

+1

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. –

+0

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

Répondre