CEF Xilium.CefGlue 防止浏览器闪退

来源:互联网 发布:武侠台词 知乎 编辑:程序博客网 时间:2024/05/16 04:35

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 防止浏览器闪退

0 0