CefSharp.BrowserSubprocess остается запущенным с высокой загрузкой процессора в случае сбоя приложения - PullRequest
0 голосов
/ 19 сентября 2018

Я использую отличный проект 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();
}

Iзаметил, что если приложение убито, CefSharp.BrowserSubprocess, ответственный за рендеринг, остается запущенным и начинает использовать lot ЦП и делает это бесконечно.

Я могу добавить некоторый код кобработайте это, проверяйте любой потерянный процесс CefSharp.BrowserSubprocess и уничтожайте их.Мне интересно, есть ли лучший вариант?

Было бы замечательно, если бы сам процесс мог выполнить проверку периода и убить себя, возможно, в качестве параметра.

1 Ответ

0 голосов
/ 19 сентября 2018

Как ответила @amaitland, для мониторинга родительского процесса должна быть установлена ​​следующая настройка:

CefSharpSettings.SubprocessExitIfParentProcessClosed = true;

...