我在 WPF 中使用 CefSharp 55。每次新建ChromiumWebBrowser一个,任务管理器中都会出现一个新的CefSharp.BrowserSubprocess.exe,这是正常的。但是,他们当我打电话不会消失Dispose()在ChromiumWebBrowser。它们只有在我关闭应用程序时才会消失,可能是因为当时我打电话给Cef.Shutdown(). 我试图在处置后强制 GC,但我什么也没改变。
因此,如果用户在 Web 浏览器中不断打开和关闭选项卡,我们最终会运行很多 CefSharp.BrowserSubprocess,它们永远不会在应用程序关闭时关闭。
在扩展类的构造函数中ChromiumWebBrowser,我做
var requestContextSettings = new RequestContextSettings
{
PersistSessionCookies = false,
IgnoreCertificateErrors = true
};
RequestContext = new RequestContext(requestContextSettings);
Run Code Online (Sandbox Code Playgroud)
当我处理浏览器时,请执行
browser.Dispose();
browser.RequestContext.Dispose()
Run Code Online (Sandbox Code Playgroud)
我忘记了什么吗?
编辑
显然,问题不仅限于 CefSharp.BrowserSubprocess。当我处理播放 youtube 视频的浏览器时,视频的声音仍在运行。之前是正常的,处理后视频声音被剪掉了。也许是我最近更新的新版 CefSharp 中的一个错误。
我发现了问题所在。我实现了ILifeSpanHandler我返回 true 的位置,DoClose(...)因为我虽然返回 true 意味着你告诉浏览器它可以关闭。但是在文档中它说返回 false 以立即销毁浏览器。
( https://github.com/cefsharp/CefSharp/blob/master/CefSharp/Handler/ILifeSpanHandler.cs )
执行此操作后,当我关闭相应的 Web 浏览器时,CefSharp.BrowserSubprocess 将关闭。
| 归档时间: |
|
| 查看次数: |
7863 次 |
| 最近记录: |