我一直在.net C#开发一个用于GSM调制解调器的Windows应用程序,我遇到了一个奇怪的错误:
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时不应该避免这种情况吗?
答案 0 :(得分:1)
当您尝试使用已处置的对象时,总会出现System.ObjectDisposedException,因此您已经自己回答了问题=)
答案 1 :(得分:0)
您是否在端口的DataReceived事件上注册了处理程序?如果是这样,您应该在关闭端口之前取消注册它(并且可能添加Sleep()调用以允许任何当前正在运行的处理程序完成)。