奇怪的未处理异常

时间:2009-10-12 17:24:53

标签: .net serial-port windows

我一直在.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时不应该避免这种情况吗?

2 个答案:

答案 0 :(得分:1)

当您尝试使用已处置的对象时,总会出现System.ObjectDisposedException,因此您已经自己回答了问题=)

答案 1 :(得分:0)

您是否在端口的DataReceived事件上注册了处理程序?如果是这样,您应该在关闭端口之前取消注册它(并且可能添加Sleep()调用以允许任何当前正在运行的处理程序完成)。