2

C# では、このコントロールをメイン スレッドの別のスレッドで実行する Web ブラウザー コントロール (Watin ブラウザー コントロール) として使用します。

数時間後、メモリ リークが発生します。

から " "を呼び出すことを提案する別の投稿 (ここ: IE WebBrowser コントロールでメモリ リークを修正する方法?または.NET WebBrowser コントロールでメモリ リークを回避する方法) があります。SetProcessWorkingSetSizeKERNEL32.DLL

回避策は、Web ブラウザ コントロールの winform を最小化することです。

私の質問は、この問題を解決する別の方法があるかどうかです。そうでない場合は、mozilla-gecko のような別の Web ブラウザ コントロールを使用すれば、このメモリ リークを解決できます。

4

1 に答える 1

4

解決策は、ガベージ コレクターを呼び出し、Windows OS に強制的にメモリをクリーンアップさせることです。たとえば、finally には次のように記述できます。

finally
{
    GC.Collect();
    GC.WaitForPendingFinalizers();

    EmptyWorkingSet(GetCurrentProcess());
}

EmptyWorkingSetOS に強制的にメモリをクリーンアップさせます。

于 2013-09-06T12:09:40.467 に答える