pcbadboy 2018-10-07 14:32 采纳率: 0%
浏览 4636

调用CefSharp.Cef.Shutdown,再次调用CefSharp.Cef.Initialize出现异常【红包感谢】

没有分因此不能悬赏,能帮忙解决问题红包感谢!!

今日在做一个小程序,需要嵌入浏览器,但自带的webbroswer实在太高(la)端(ji),因此使用CefSharp。
程序中需不断修改UserAgent,但是CefSharp是在开始时就将配置信息都写入CefSettings,再通过CefSharp.Cef.Initialize方法进行初始化。
后面就没有找到什么地方能够修改UserAgent。
初始化的代码为:

 CefSharp.CefSettings setting = new CefSharp.CefSettings();
                setting.Locale = "zh-CN";
                setting.CachePath = "CHBrowser/BrowserCache3";//缓存路径 
                setting.AcceptLanguageList = "zh-CN,zh;q=0.8";//浏览器引擎的语言
                setting.LocalesDirPath = "CHBrowser/localeDir3";//日志
                setting.LogFile = "CHBrowser/LogData";//日志文件
                setting.PersistSessionCookies = true;//
                setting.UserAgent = "";//浏览器内核
                setting.UserDataPath = "CHBrowser/userData3";//个人数据
                CefSharp.Cef.Initialize(setting);

                CefSharp.WinForms.ChromiumWebBrowser WebBrowser = new CefSharp.WinForms.ChromiumWebBrowser("http://www.baidu.com"); //初始页面

                WebBrowser.Dock = DockStyle.Fill;//设置停靠方式
                this.Controls.Add(WebBrowser);//加入窗体

自己的思路:想要修改UserAgent,就需要释放CefSharp.Cef,通过代码:

 CefSharp.Cef.Shutdown();

进行释放。

之后再修改setting的信息,再调用

 CefSharp.Cef.Initialize(setting);

调用以上代码的时候,程序不抛出异常,直接闪退了,输出记录提示:退出。返回值:0x80000003

求大神指导应如何处理!!!

经多方查询资料,初步判断问题为:在C++回调C#函数的时候,C#里的内存回收机制,会影响C++动态库的稳定性。C++回调C#里面的函数,C++里面用的是函数指针,但C#里面只能用委托了。造成错误。
参考:http://www.debugease.com/csharp/3532235.html

该文章提出解决方案:
在声明委托前要加上这句:
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
包含在:
using System.Runtime.InteropServices;

但是我的程序是直接引用的CefSharp,并未声明委托,我应该如何添加?

求大神指导:
1、是否可以另有办法修改UserAgent
或:
2、如何处理上述错误

  • 写回答

1条回答 默认 最新

  • liaoxingwei2008 2022-06-21 19:47
    关注

    解决了吗

    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题