您的位置:首页 > 产品设计 > UI/UE

CEF Xilium.CefGlue 防止浏览器闪退

2015-07-20 20:47 926 查看
CEF Xilium.CefGlue在打开网页的时候,经常会死掉闪退,频率有可能会频繁到开几个网页就死掉了,在这种情况下使用CEF来开发自己的浏览器应用程序基本上不可能。笔者经过自己的一些使用经历和在交流群群友的分享,找到了解决方法

在CEF 初始化的CefRuntime.Initialize方法传入的CefSettings中,加入如下属性:

settings.WindowlessRenderingEnabled = true;

该属性主要是针对用那种JSUI的控件的网站,如果不启用,浏览器遇到该类网站基本上都会闪退,完整代码如下:

CefRuntime.Load();
var settings = new CefSettings();
.
.
.
.
.
.
//如果不开启好多用那种JSUI的控件的网站 什么的全死
settings.WindowlessRenderingEnabled = true;

var args = new string[] { };
var argv = args;
if (CefRuntime.Platform != CefRuntimePlatform.Windows)
{
argv = new string[args.Length + 1];
Array.Copy(args, 0, argv, 1, args.Length);
argv[0] = "-";
}

var mainArgs = new CefMainArgs(argv);

var exitCode = CefRuntime.ExecuteProcess(mainArgs, Global.app);
Console.WriteLine("CefRuntime.ExecuteProcess() returns {0}", exitCode);
if (exitCode != -1)
return exitCode;

foreach (var arg in args) { if (arg.StartsWith("--type=")) { return -2; } }
CefRuntime.Initialize(mainArgs, settings, Global.app);


还有就是如果设置了CEF 的CachePath,那么最好是定期清理该目录,防止CachePath过大而影响浏览器的使用。

当然如果有针对浏览器的Cookie操作及处理,最好是设定浏览器保存Cookie文件的目录:browser.SetCookiePath(path);

转自:CEF Xilium.CefGlue 防止浏览器闪退
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: