2017-08-28 4771 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

回答

相关问题