2017-08-28 235 views
1

WPFでCefSharp 55を使用しています。 ChromiumWebBrowserを新規作成するたびに、新しいCefSharp.BrowserSubprocess.exeがタスクマネージャーに表示されますが、これは正常です。しかし、私はDispose()ChromiumWebBrowserと呼ぶと消えません。私はアプライゼーションを閉じると消えてしまいます。その時は私がCef.Shutdown()と呼んでいるからです。私は処分後にGCを強制しようとしたが、私は何も変えなかった。ChromiumWebBrowserが破棄されたときにCefSharp.BrowserSubprocessが閉じられない

ユーザーがウェブブラウザで開閉タブを開いたままにしてしまうと、アプリが終了しても実行されないCefSharp.BrowserSubprocessの実行が多くなります。 ChromiumWebBrowserを拡張するクラスのコンストラクタで

私はブラウザを廃棄する場合、私は何かを

browser.Dispose(); 
browser.RequestContext.Dispose() 

を忘れてしまったのか、

var requestContextSettings = new RequestContextSettings 
{ 
    PersistSessionCookies = false, 
    IgnoreCertificateErrors = true 
}; 

RequestContext = new RequestContext(requestContextSettings); 

しますか?

編集はどうやら問題はCefSharp.BrowserSubprocessに限定されるものではありません。私がyoutubeビデオを再生するブラウザを処分するとき、ビデオの音はまだ動いています。それは前に働いていた、ビデオサウンドは、処分後にカットされた。最近更新されたCefSharpの新バージョンのバグかもしれません。

+0

あなたはそれについて心配する必要はありません。 [this](https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage#markdown-header-processes) – Amogh

+0

私は**プロセス**セクションを読んでいます。複数のプロセスが生成されると説明していますが、アプリケーションが終了するまで生き続けるのが普通かどうかは言いません。 私はopeneingしてWebブラウザのタブを閉じていたテストをしました。私はすぐに記憶喪失を起こします。 私たちのアプリケーションは、一日中再起動せずに実行されるはずです。それは終わりまで続くことはありません。 – Gael

答えて

2

問題が見つかりました。私はILifeSpanHandlerの実装を行いました。DoClose(...)でtrueを返していました。なぜなら、私は本当に戻りますが、ブラウザが閉じることができるということです。しかし、ドキュメントでは、即座にブラウザを破壊するためにfalseを返すと言います。

https://github.com/cefsharp/CefSharp/blob/master/CefSharp/Handler/ILifeSpanHandler.cs

私は、対応するWebブラウザを閉じたときにこれを実行した後、CefSharp.BrowserSubprocessが閉じています。

関連する問題