Я использую отличный проект 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
и уничтожайте их.Мне интересно, есть ли лучший вариант?
Было бы замечательно, если бы сам процесс мог выполнить проверку периода и убить себя, возможно, в качестве параметра.