CefSharp.BrowserSubprocess 在处理 ChromiumWebBrowser 时未关闭

CefSharp.BrowserSubprocess are not closed when ChromiumWebBrowser is Disposed

我在 WPF 中使用 CefSharp 55。每次我新建一个ChromiumWebBrowser,任务管理器里都会出现一个新的CefSharp.BrowserSubprocess.exe,这是正常的。但是当我在 ChromiumWebBrowser 上调用 Dispose() 时它们并没有消失。它们只会在我关闭应用程序时消失,可能是因为那时我调用了 Cef.Shutdown()。我试图在处理后强制 GC,但我什么也没改变。

因此,如果用户不断在网络浏览器中打开和关闭选项卡,我们最终会得到很多 CefSharp.BrowserSubprocess 运行,除非应用程序关闭,否则它们永远不会关闭。

在 class 扩展 ChromiumWebBrowser 的构造函数中,我做

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

RequestContext = new RequestContext(requestContextSettings);

当我配置浏览器时,做

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

我是不是忘记了什么?

编辑

显然问题不仅限于 CefSharp.BrowserSubprocess。当我配置浏览器播放 youtube 视频时,视频的声音仍然是 运行。之前是可以用的,处理后视频声音被切断了。可能是我最近更新的新版CefSharp的bug。

我找到问题所在了。我实现了 ILifeSpanHandler,我在 DoClose(...) 中 return 为真,因为我虽然 return 为真意味着你告诉浏览器它可以关闭。但是在文档中它说 return false 立即销毁浏览器。

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

执行此操作后,当我关闭相应的网络浏览器时,CefSharp.BrowserSubprocess也会关闭。