我在WPF中使用CefSharp 55。每次我做一個新的ChromiumWebBrowser
時,一個新的CefSharp.BrowserSubprocess.exe出現在任務管理器中,這是正常的。但是當我通過ChromiumWebBrowser
致電Dispose()
時,它們不會消失。當我關閉Apllication時,它們只會消失,因爲那時我打電話給Cef.Shutdown()
。我試圖在處置後強制GC,但我什麼也沒變。當ChromiumWebBrowser處置時CefSharp.BrowserSubprocess未關閉
因此,如果用戶不斷打開和關閉網頁瀏覽器中的標籤,我們最終會運行很多CefSharp.BrowserSubprocess,當應用程序關閉時,它將永遠不會關閉。
在擴展ChromiumWebBrowser
類的構造函數,我做
var requestContextSettings = new RequestContextSettings
{
PersistSessionCookies = false,
IgnoreCertificateErrors = true
};
RequestContext = new RequestContext(requestContextSettings);
當我處理了瀏覽器,就
browser.Dispose();
browser.RequestContext.Dispose()
難道我忘了什麼事?
編輯
顯然,它的問題並不侷限於CefSharp.BrowserSubprocess。當我處理瀏覽器播放YouTube視頻時,視頻的聲音仍在運行。之前正在工作,視頻聲音在處置後被切斷。也許這是我最近更新的新版CefSharp中的一個錯誤。
您不必擔心。閱讀[this](https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage#markdown-header-processes) – Amogh
我閱讀** Process **部分。它解釋說,多重過程將會產生,但它並沒有說它們是否正常,直到應用程序關閉時纔會保持活躍狀態。 我做了一個測試,我不斷打開並關閉Web瀏覽器選項卡。我很快得到了內存不足的崩潰。 我們的應用程序應該整天運行而不會重新啓動。它不會持續到一天結束。 – Gael