有一个c#做的项目,和硬件做一些通信和处理。 和硬件的通信是串口通信。不涉及网络。
但是有时候会出现一个问题。windows系统会出现一个对话框。说system.ObjectDisposedException发生。
对话框就是错误报告送信还是不送信。 要是不去管那个错误报告,程序还能继续运行。要是关掉错误报告的话,程序也就跟着关掉了。
这个真是不知道那里有问题啊,向大家求救。
程序也catch不到这个异常阿。 实在头疼啊。
谢谢大家了。
但是有时候会出现一个问题。windows系统会出现一个对话框。说system.ObjectDisposedException发生。
对话框就是错误报告送信还是不送信。 要是不去管那个错误报告,程序还能继续运行。要是关掉错误报告的话,程序也就跟着关掉了。
这个真是不知道那里有问题啊,向大家求救。
程序也catch不到这个异常阿。 实在头疼啊。
谢谢大家了。
socket.Send(); // <--- exception
但是一般都能捕获啊。 其他网页有说不能捕获的ObjectDisposedException,都是说socket。
只是现在这个没有用到socket啊。 RS232通信的话,也会出现这个问题么?
要是出现的话,我从哪里下手啊?
谢谢。
...
程序也catch不到这个异常阿。 实在头疼啊。
捕获不到一般是由于这个异常是由其他线程中抛出的(不一定是你创建的,可能通讯组件内部使用)。
你可以试着登记Application.ThreadException+=...来得到通知(通知而已)并进行分析。ObjectDisposedException异常一般暗示程序逻辑那里出了问题,一般要解决逻辑问题而不是试图去忽略异常。
你可以试着登记Application.ThreadException+=...来得到通知(通知而已)并进行分析。 ObjectDisposedException异常一般暗示程序逻辑那里出了问题,一般要解决逻辑问题而不是试图去忽略异常。
Thread.GetDomain().UnhandledException += new UnhandledExceptionEventHandler(Application_UnhandledException);来显示错误。
内容如下:
エラーが発生しました。開発元にお知らせください【`错误内容】
Safe handle has been closed【....】
at Microsoft.Win32.Win32Native.SetEvent(SafeWaitHandle handle)
at System.Threading.EventWaitHandle.Set()
at System.IO.Ports.SerialStream.AsyncFSCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOverlapped)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)高人有什么看法阿?
请多多指教。
GC.KeepAlive(socket);
有一个线程(Standby)一直在通过串口发命令,和读取命令。
问题出现的时候,此线程正处于发信状态中。
这个时候,另外一个事件作了Standby.Abort();操作
然后就出现问题了。没有出现问题的情况都是在Standby线程读取串口数据后或者读取串口数据时,进行Standby.Abort();操作的。
不知道是不是由于Standby.Abort();操作引起的那个不可捕获的异常的?
请高人指点
如果是,怎么处理好呢?
其实主要是他catch不到。头疼了半天。谢谢各位。