日期:2014-05-18  浏览次数:20743 次

不能捕获的system.ObjectDisposedException的问题, 急。
有一个c#做的项目,和硬件做一些通信和处理。 和硬件的通信是串口通信。不涉及网络。
但是有时候会出现一个问题。windows系统会出现一个对话框。说system.ObjectDisposedException发生。
对话框就是错误报告送信还是不送信。 要是不去管那个错误报告,程序还能继续运行。要是关掉错误报告的话,程序也就跟着关掉了。 
这个真是不知道那里有问题啊,向大家求救。 
程序也catch不到这个异常阿。 实在头疼啊。
谢谢大家了。

------解决方案--------------------
up
------解决方案--------------------

...
程序也catch不到这个异常阿。 实在头疼啊。


捕获不到一般是由于这个异常是由其他线程中抛出的(不一定是你创建的,可能通讯组件内部使用)。
你可以试着登记Application.ThreadException+=...来得到通知(通知而已)并进行分析。

ObjectDisposedException异常一般暗示程序逻辑那里出了问题,一般要解决逻辑问题而不是试图去忽略异常。


------解决方案--------------------
捕获不到一般是由于这个异常是由其他线程中抛出的(不一定是你创建的,可能通讯组件内部使用)。 
你可以试着登记Application.ThreadException+=...来得到通知(通知而已)并进行分析。 

ObjectDisposedException异常一般暗示程序逻辑那里出了问题,一般要解决逻辑问题而不是试图去忽略异常。 


------解决方案--------------------
应该是在回调(callback)是socket对象已经被GC干掉了,lz试试下面的或者把socket做成singleton。
C# code
GC.KeepAlive(socket);