如果应用程序崩溃,CefSharp.BrowserSubprocess将以高CPU运行



我正在利用优秀的CefSharp项目(版本67(在我们的WPF应用程序中托管浏览器。

使用 CefSharp 会导致启动子CefSharp.BrowserSubprocess进程,这是设计使然。

如果我完全退出应用程序并按照文档中的建议调用Cef.Shutdown(),这些进程将停止:

// Hook up handler earlier in application
Application.Current.Exit += OnApplicationExit;
...
private void OnApplicationExit(object sender, ExitEventArgs e)
{
if (Dispatcher.CheckAccess() == false)
{
Dispatcher.Invoke(() => OnApplicationExit(sender, e));
return;
}
// Stops CefSharp.BrowserSubprocess processes
Cef.Shutdown();
}

我注意到,如果应用程序被杀死,负责渲染的CefSharp.BrowserSubprocess将保持运行状态,并开始使用大量CPU,并且无限期地这样做。

我可以添加一些代码来处理这个问题,检查是否有任何孤立的CefSharp.BrowserSubprocess进程,并杀死它们。我想知道是否有更好的选择?

如果过程本身可以自己执行周期检查并杀死自己,那就太好了,也许作为一种设置。

正如@amaitland所回答的那样,应设置以下设置来监视父进程:

CefSharpSettings.SubprocessExitIfParentProcessClosed = true;

最新更新