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

时间:2018-09-19 04:03:45

标签: cefsharp

我正在利用出色的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进程,然后杀死它们。我想知道是否还有更好的选择?

如果流程本身可以执行定期检查并杀死自己(可能是一种设置),那就太好了。

1 个答案:

答案 0 :(得分:1)

@amaitland回答,应该设置以下设置来监视父进程:

CefSharpSettings.SubprocessExitIfParentProcessClosed = true;