我正在将我的应用程序从 CefSharp 53 升级到当前的 CefSharp 73。(我知道,超级落后)。我专门使用 CefSharp.OffScreen.ChromiumWebBrowser,我注意到的一件事是现在有两个 CefSharp.BrowserSubprocess.exe 进程启动(在 Windows 10、x64 上)。当调用 dispose 时,两个进程之一关闭,而另一个打开。
这是预期的吗?在版本 53 中,它只启动了一个进程并在调用 dispose 时将其关闭。如果它有助于我使用 cefsharp 创建屏幕截图,那么在页面加载后,我调用 ScreenShotOrNull()。
编辑:一些代码上下文:
我在 Windows 服务启动时启动 cefsharp:
static void Main(string[] args)
{
var settings = var settings = new CefSettings
{
LogSeverity = LogSeverity.Warning
};
settings.CefCommandLineArgs.Add("disable-gpu", "1");
settings.CefCommandLineArgs.Add("disable-gpu-vsync", "1");
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
Cef.Initialize(settings);
}
此时没有浏览器被实例化,因此没有进程。但是,当需要时,我会致电:
using (_browser = new ChromiumWebBrowser(url) { Size = new
Size(width, 720) })
{
// At this point, there are two processes
// Code waiting for browser to finish loading
using(var bitmap = _browser.ScreenshotOrNull())
{
// Code for saving
}
}
完成后只有一个进程,命令行参数如下:
--type=gpu-process --field-trial-handle=2968,16124456567459120137,1231289933363561479,131072 --disable-features=VizDisplayCompositor --no-sandbox --disable-gpu-vsync=1 --log-file="log.txt" --log-severity=warning --lang=en-US --cefsharpexitsub --gpu-preferences=AGiantStringThatWontDisplayHereCorrectly --use-gl=swiftshader-webgl --log-file="debug.log" --service-request-channel-token=13307567583052100413 --mojo-platform-channel-handle=3016 /prefetch:2 --host-process-id=7444 10428