CefSharp在XP下出现应用程序错误发生未知的软件异常

.Net技术 针尖舞 8年前 (2016-09-12) 4097次浏览 0个评论

CefSharp在XP下出现应用程序错误发生未知的软件异常

注:由于CefSharp新版本中已经逐步取消对XP系统的支持,所以如果需要在XP系统使用CefSharp,最好选择低版本的CefSharp,目前本人已知的45版本可以在XP中使用。本文主要讲述作者在XP系统中遇到的应用程序错误发生未知的软件异常问题。

资源: 在官网下载了cefSharp包后,将需要的文件引入项目中项目开发使用的是VS2012,环境win7系统。在win7系统下面,系统很稳定,运行正常。在XP系统下我们也做过简单测试,没有发现太多问题。

一次演示汇报:前两天因为客户端现场需要演示汇报,演示的机器是一台XP系统。在部署完成后做简单测试时,被吓尿了。当程序中听音控件播放两次以上的语音时,系统直接崩溃,连提示信息都没有。

没有任何作用的异常信息:

使用VS在XP系统下对程序进行调试,可VS根本就不能捕获到异常。这下坑大了。操作系统出现的异常如下,但对我们解决问题有用信息几乎为0:

CefSharp在XP下出现应用程序错误发生未知的软件异常

 

没办法只能对所有的异常出现可能的地方进行猜测。根据现象我们发现系统只要在XP系统下就会出现崩溃的可能。于是我把官网cefSharp的的代码看了一下,发现本身编译好的dll并没有支持XP系统,于是我对工程中的cefSharp工程和cefSharp.winform工程的平台工具集设置成XP系统:

CefSharp在XP下出现应用程序错误发生未知的软件异常

编译好后,替换工程中的cefSharp.dll和cefSharp.winform.dll后并测试。发现崩溃频率有所降低,但是只要我们的播放控件进行播音操作就有可能出现崩溃。于是我们猜测可能是我们的播放控件与cef可能在XP下发生冲突产生错误了。

【问题定位】

于是,我和这边负责播放控件的JW哥一起来排查问题,佳伟哥负责排查播放器控件,我负责cefSharp控件。就这样两个人苦逼的折腾一天,最后我们得出结论,问题出在cefSharp控件这一块。JW哥调试后发现出现异常时,播放控件执行到最后的每次位置不一样,而且播放器代码相对稳定。我这边则主要做了如下操作:

1.使用webBrowser替换cefSharp,结果程序在XP下正常。

2.客户端只加载播放器,不播放。结果程序在XP下正常。

3.客户端不加载播放器,只加载网页,结果程序XP下正常。

4.客户端去除CEF.Initialize()方法,结果程序正常。

当测试一天后,我发现去除了CEF.Initialize()方法程序正常

【疑惑】

既然问题已经将范围缩小到CEF.Initialize()的方法中,那就看看该方法做了什么操作,其实该方法做了只是创建一个Settings对象,去设置CEF的环境,settings里面主要是对系统做了缓存路径和和设置Flash插件。我开始做了如下尝试:

1.去除设置Flash插件,结果程序在XP下崩溃。

2.去除设置缓存路径,结果程序XP下崩溃。

3.Setting只创建一个对象,什么也不设置,结果程序还是崩溃。

看到这三条测试结果,瞬间崩溃。这是什么奇葩问题,难道不能对CEF进行设置?

【定位最后原因】

思考之前在XP下简单测试并没有发现这个现象。本来系统对CEF环境位置是这样的:

CefSharp在XP下出现应用程序错误发生未知的软件异常

该环境初始化的方法是参照官网给出的例子的位置进行的CEF环境的初始化。但是当我们将CEF环境的初始化,放到MainForm的构造函数中,系统竟然不再出现崩溃。(看到这样的结果,真有点百思不得其解)。

【思考】

对于本次的问题,我也做了如下的思考:

1.现在网络上的一些开源的东西,其开发者可能对有些问题存在不清楚的地方。

2.其实本次问题一开始出现,自己就应该与之前XP系统测试结果作比较,(因为该环境初始化的位置XP测试过后整理的部分)。

3.面对问题,方式方法很重要

虽然问题是解决了,但是还没有真正搞明白为什么这个CEF环境的初始位置会对系统的稳定性产生影响,希望看到此文章的大牛,有知道的给出回复.


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明CefSharp在XP下出现应用程序错误发生未知的软件异常
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!