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

问题描述 投票:0回答:1

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

利用CefSharp可以启动子CefSharp.BrowserSubprocess进程,这是设计的。

如果我干净地退出我的应用程序并按照Cef.Shutdown()中的建议调用documentation,则会停止这些进程:

// 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进程,并杀死它们。我想知道是否有更好的选择呢?

如果过程本身可以执行一个周期检查并自杀,也许作为一个设置,那将是很好的。

cefsharp
1个回答
1
投票

正如@amaitland所述,应该设置以下设置来监视父进程:

CefSharpSettings.SubprocessExitIfParentProcessClosed = true;

© www.soinside.com 2019 - 2024. All rights reserved.