2017-08-28 4769 views
1

我在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中的一個錯誤。

+0

您不必擔心。閱讀[this](https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage#markdown-header-processes) – Amogh

+0

我閱讀** Process **部分。它解釋說,多重過程將會產生,但它並沒有說它們是否正常,直到應用程序關閉時纔會保持活躍狀態​​。 我做了一個測試,我不斷打開並關閉Web瀏覽器選項卡。我很快得到了內存不足的崩潰。 我們的應用程序應該整天運行而不會重新啓動。它不會持續到一天結束。 – Gael

回答

相關問題