.Net写的Winform程序,运行一段时间就停止了,高分求教。

版本:.Net Framwork4.0
服务器系统:windows server 2008
我的需求是通过我这个Winform程序调用C++动态库和硬件设备建立通信,通信建立完成后,再调用这个动态库定时收发数据,其中程序中使用了3个定时器,会操作到数据库。程序写完后,所有功能都能满足我的需求,但是就是每次在服务器上运行大概1个小时后,程序就挂了,try cache也没捕捉异常,错误提示界面:

查看windows日志有提示错误:

求高手解决,高分悬赏。。。。。
解决可以另加分。。。

据你所说,程序运行一定时间后崩溃,
那么初步猜测你的数据库连接后忘记关闭,导致连接上限?
再者是时间控件了,这我也不太懂!
希望有所帮助...追问

你说的建议我之前有考虑,所以在数据库的连接串里面加了 pooling=false 但是仍然有相同的问题。

追答

功力不足了 抱歉……

追问

还是要谢谢你。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-29
是不是3个计时器在1小时后都调用了同一个函数而导致的崩溃?
还有你try_catch应该在Timer事件里...追问

try catch 在每个方法里面都有写,就是捕捉不到异常,有两个定时器有操作同一个DataTable 但是我lock了,应该不会是这边的原因。

追答

虽然try捕获不了错误,但日志写的很清楚,是System.AccessViolationException错误。
此错误大部分是由于访问受保护或损坏的内存而引起的。
(官方: 在试图读写受保护内存时引发的异常。)
原因不是在于C#程序而是在C++编的那个DLL里。
将dll里函数需要返回的局部变量都声明为static。
如果还是错,那就是C++代码的问题了。

追问

里面已经全部是Static变量了

第2个回答  2013-09-10
这明显是多线程引起的异常,应该是你的多个线程同时访问同一个资源引起的,自己多理理代码吧
相似回答