奇怪的未经处理的exception

我一直在开发一个windows应用程序在.net C#GSM调制解调器,我遇到了一个奇怪的错误:

System.ObjectDisposedException was unhandled Message="The secure parameter identifier was closed (pt: O parâmetro identificador seguro foi fechado)" Source="System" ObjectName="" StackTrace: at Microsoft.Win32.UnsafeNativeMethods.GetOverlappedResult(SafeFileHandle hFile, NativeOverlapped* lpOverlapped, Int32& lpNumberOfBytesTransferred, Boolean bWait) at System.IO.Ports.SerialStream.EventLoopRunner.WaitForCommEvent() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart() InnerException: 

这只是最近才发生 – 我不知道为什么…可能是因为我正在处理一个SerialPort并获得调制解调器的答案? – 当我处理SerialPort时,不应该避免这种情况吗?

System.ObjectDisposedException总是发生在你试图使用处置对象时,所以你已经回答了你自己的问题=)

你在端口的DataReceived事件上注册了一个处理程序吗? 如果是这样的话,你应该取消注册(也许可以添加一个Sleep()调用来允许任何当前正在运行的处理程序完成),然后关闭端口。