当前位置:编程学习 > C#/ASP.NET >>

mfc所需资源不可用

使用vs2008,建立的是mfc的单文档工程,可以正常运行,但是程序打开2天以上,就会弹出所需资源不可用的对话框,并且界面变的凌乱,字体变形,工程中导入的图标图片也不能在界面中正常显示,但是程序没有死,只是无法定位程序的资源文件,包括mfc本身的界面库,各种图标,按钮,菜单消失,字体异常。
最开始怀疑是内存泄露,但是运行了一周,查看内存使用只有十几M,这个问题又是要运行很长一段时间才会出现,所以现在一直无法定位问题,网上全是说让查找代码定位,关键是我的工程要运行n久才会出现,一个白天甚至2天都不一定出现,又不能24小时盯在电脑前,而且不做任何操作,只是让他运行着就会出现所需资源不可用这个问题。
运行工程后,在Output中会出现很多first-chance exception at (内存地址) _com_error in 地址,我定位到那些function都是ado连接数据库的语句像是result_set.open(sql);这样的,我加入try catch也捕获不了这些异常,程序不进catch(试了catch(...)和catch(_com_error e)),而且不时会有win32 thread has exited(0x0)的提示信息出现,不知道是否跟这个有关,因为程序需要跟数据库长连接,我使用的是ado连接Oracle10g,用户需求又是要求软件可以持续使用,请遇到这种问题或者知道问题成因的人帮帮忙
MFC 界面 异常 资源不可用 --------------------编程问答-------------------- 数据库在本地还是远程? --------------------编程问答--------------------
引用 1 楼 glorier 的回复:
数据库在本地还是远程?

远程 --------------------编程问答-------------------- 是不是远程数据库访问太频繁导致数据库出问题了? --------------------编程问答--------------------
引用 3 楼 glorier 的回复:
是不是远程数据库访问太频繁导致数据库出问题了?

应该不是,因为软件还可以用,而且点击那些数据库相关的button,listctrl都可以显示查询结果,更新数据什么的也可以,感觉是界面资源的问题,我怀疑是resource.h里的资源编号可能有问题,有的dlg删了然后又添加一个同名的,而且有些控件是动态生成的,重载了几个控件类,主要是没遇到过这种情况,网上的相关资料比较少,bug出现的频率又比较独特,实在是无法定位到底是哪里出了问题 --------------------编程问答--------------------
引用 4 楼 uther1 的回复:
Quote: 引用 3 楼 glorier 的回复:

是不是远程数据库访问太频繁导致数据库出问题了?

应该不是,因为软件还可以用,而且点击那些数据库相关的button,listctrl都可以显示查询结果,更新数据什么的也可以,感觉是界面资源的问题,我怀疑是resource.h里的资源编号可能有问题,有的dlg删了然后又添加一个同名的,而且有些控件是动态生成的,重载了几个控件类,主要是没遇到过这种情况,网上的相关资料比较少,bug出现的频率又比较独特,实在是无法定位到底是哪里出了问题




我也遇到这个问题了,我的MFC对话框时运行十分钟就出现这种情况,楼主找到原因没,希望能分享一下 --------------------编程问答--------------------
引用 5 楼 u010875822 的回复:
Quote: 引用 4 楼 uther1 的回复:

Quote: 引用 3 楼 glorier 的回复:

是不是远程数据库访问太频繁导致数据库出问题了?

应该不是,因为软件还可以用,而且点击那些数据库相关的button,listctrl都可以显示查询结果,更新数据什么的也可以,感觉是界面资源的问题,我怀疑是resource.h里的资源编号可能有问题,有的dlg删了然后又添加一个同名的,而且有些控件是动态生成的,重载了几个控件类,主要是没遇到过这种情况,网上的相关资料比较少,bug出现的频率又比较独特,实在是无法定位到底是哪里出了问题




我也遇到这个问题了,我的MFC对话框时运行十分钟就出现这种情况,楼主找到原因没,希望能分享一下

你用gdiplus类了没有,我在codeguru找到了解决方法,上面说使用gdiplus绘制的时候只能申请10000个对象,delete该对象并不释放所有资源,需要使用releaseDC来释放其所有资源,我程序使用了gdiplus绘制图表,根据收到的msg来重绘,没有使用releaseDC来进行释放,你可以看看http://forums.codeguru.com/showthread.php?304223-error-quot-A-required-resource-was-unavailable-quot/page2 --------------------编程问答--------------------
补充:.NET技术 ,  VC.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,