FBrowserCEF3Lib浏览器开发技术交流网址

 找回密码
 立即注册
查看: 589|回复: 1

5.0版本设置独立缓存如果要用同步创建浏览器的正确姿势

[复制链接]

签到天数: 467 天

[LV.9]以坛为家II

79

主题

416

回帖

79万

积分

管理员

皇冠皇冠皇冠皇冠太阳太阳

积分
798316

优秀会员永久VIP会员活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老荣耀会员精华大师大富翁

发表于 2026-5-27 15:38:21 | 显示全部楼层 |阅读模式
C#源码分享
开发平台: C#
使用框架: FBrowserCEF3
代码类型: 源码
界面截图: -

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

方法一:
[C#] 查看源码 复制代码
        public class CreatBrowserTask : FBroSharpTask
        {

            public FBroSharpRequestContext request_context = null;

            public override void Execute()
            {
                FBroSharpWindowsInfo windows_info = new FBroSharpWindowsInfo
                {
                    parent_window = IntPtr.Zero,
                    x = 0,
                    y = 0,
                    width = 1024,
                    height = 800,
                    window_name = "独立缓存"
                };

                //创建浏览器事件回调类
                BrowserEvent browser_event = new BrowserEvent();

                var browser = FBroSharpControl.CreateSync("https://www.baidu.com", windows_info, default, request_context, default/*extra_info*/, browser_event, default/*event_contrl*/);
                Console.WriteLine(browser.IsValid);
            }
        }

        private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {

            CreatBrowserTask callback = new CreatBrowserTask();

            //设置运行环境
            FBroSharpRequestContextSet contextSet = new FBroSharpRequestContextSet
            {
                cache_folder = "syncothercache"
            };

            callback.request_context = (FBroSharpRequestContext)FBroSharpRequestContext.CreateContext(contextSet);

            FBroSharpTaskRunner.CefPostDelayedTask(FBroSharpThreadID.TID_UI, callback, 500);

        }


方法二:
[C#] 查看源码 复制代码
        public class CreatBrowserTask : FBroSharpTask
        {

            public FBroSharpRequestContext request_context = null;

            public override void Execute()
            {
                FBroSharpWindowsInfo windows_info = new FBroSharpWindowsInfo
                {
                    parent_window = IntPtr.Zero,
                    x = 0,
                    y = 0,
                    width = 1024,
                    height = 800,
                    window_name = "独立缓存"
                };

                //创建浏览器事件回调类
                BrowserEvent browser_event = new BrowserEvent();

                var browser = FBroSharpControl.CreateSync("https://www.baidu.com", windows_info, default, request_context, default/*extra_info*/, browser_event, default/*event_contrl*/);
                if (browser == null)
                {
                    //创建失败重新创建
                    FBroSharpTaskRunner.CefPostTask(FBroSharpThreadID.TID_UI, this);
                    return;
                }
                Console.WriteLine(browser.IsValid);
            }
        }

        private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {

            CreatBrowserTask callback = new CreatBrowserTask();

            //设置运行环境
            FBroSharpRequestContextSet contextSet = new FBroSharpRequestContextSet
            {
                cache_folder = "syncothercache"
            };

            callback.request_context = (FBroSharpRequestContext)FBroSharpRequestContext.CreateContext(contextSet);

            FBroSharpTaskRunner.CefPostTask(FBroSharpThreadID.TID_UI, callback);

        }


PS:
1.方法一源码里面采用了延迟500毫秒执行创建浏览器的任务,是因为创建独立缓存目录的环境你必须提前创建,就是这个
FBroSharpRequestContext.CreateContext,而5.0后内部这里已经改成异步了,你设置的时候他并没有创建成功,必须要异步等待,直接传递给浏览器,浏览器发现还没创建成功就会创建失败,返回浏览器就会是空,所以这就必须要异步等待才行;

2.其实还有个办法,就是提前创建好环境,比如初始化后,再使用同步创建浏览器直接调用已经创建好的环境也不会出问题;或者要不使用方法二,如果创建失败在重新创建一次,一般第二次环境基本创建好了,也会成功,而且基本无感
3.主要要使用同步创建浏览器才会有这个问题,使用异步创建就不会有这个问题,所以还是建议使用异步,而且异步也是最快的!

4.同理,易和火山也是如此!



签到天数: 695 天

[LV.9]以坛为家II

294

主题

606

回帖

1万

积分

超级版主

皇冠皇冠皇冠太阳

积分
17933

活跃会员热心会员永久VIP会员推广达人宣传达人突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2026-5-27 15:59:08 | 显示全部楼层
到最后,我更倾向于使用异步,稳定简单
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们 在线手册 视频教程 赞助支持 CEF官网 易语言官网 火山开发官网
拒绝任何人以任何形式在本网站发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表本网站立场!

网址帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!

Archiver| 手机版| 小黑屋| 联系QQ:283987887 劰载中...

Powered by Discuz! X5.0 GMT+8, 2026-9-17 07:05 , Processed in 0.024456 second(s), 12 queries , Redis On.

 川公网安备51090302000262 蜀ICP备2023034329号
快速回复 返回顶部 返回列表