我正在利用出色的CefSharp项目(版本67)在WPF应用程序中托管浏览器。
使用CefSharp会导致CefSharp.BrowserSubprocess
子进程的启动,这是设计使然。
如果我完全退出应用程序并按照documentation的建议调用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
会继续运行,并开始使用 lot CPU,并且会无限期地运行。
我可以添加一些代码来处理此问题,检查任何孤立的CefSharp.BrowserSubprocess
进程,然后杀死它们。我想知道是否还有更好的选择?
如果流程本身可以执行定期检查并杀死自己(可能是一种设置),那就太好了。
答案 0 :(得分:1)
@amaitland回答,应该设置以下设置来监视父进程:
CefSharpSettings.SubprocessExitIfParentProcessClosed = true;