2

私はこのチュートリアルに基づいてBHOを作成しました:http: //www.codeproject.com/KB/cs/Attach_BHO_with_C_.aspx

GetSiteSetSiteはチュートリアルリストと同じです。OnDocumentCompleteハンドラーを追加/削除し、 SetSite関数SHDocVW.WebBrowser webBrowser内で割り当てていますIObjectWithSite

デバッグの目的で、基本的な機能を除くすべてを削除しました。これが私の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で実行する必要のあるクリーンアップは他にもありますか?ありがとう!

4

1 に答える 1

3

を呼び出しMarshal.ReleaseCOMObject(document)てみてください。

于 2010-07-13T21:39:53.360 に答える