C# 串口 已關閉 Safe handle

今天在使用個人通訊框架,建立基於串口通訊的客戶端時,出現這樣一個BUG:緩存

 

[csharp]  view plain  copy
 
  1. 未處理 System.ObjectDisposedException  
  2.   Message=已關閉 Safe handle  
  3.   Source=mscorlib  
  4.   ObjectName=""  
  5.   StackTrace:  
  6.        在 System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success)  
  7.        在 System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success)  
  8.        在 Microsoft.Win32.UnsafeNativeMethods.GetOverlappedResult(SafeFileHandle hFile, NativeOverlapped* lpOverlapped, Int32& lpNumberOfBytesTransferred, Boolean bWait)  
  9.        在 System.IO.Ports.SerialStream.EventLoopRunner.WaitForCommEvent()  
  10.        在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)  
  11.        在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)  
  12.        在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)  
  13.        在 System.Threading.ThreadHelper.ThreadStart()  
  14.   InnerException:   


當這個BUG出現時,程序直接崩潰,沒法跟蹤到錯誤代碼位置。app

 

通過一番測試,查找問題。發如今一個函數內利用SerialPort建立了串口通訊實例後,沒有將該實例放入任何其餘容器中進行緩存,從而致使了上述崩潰BUG的產生。框架

後來修改代碼,將該實例放入了一個全局變量List<通訊客戶端>集合中,該BUG得以解決。函數

 

原文地址:https://blog.csdn.net/yeqi3000/article/details/41983517oop

相關文章
相關標籤/搜索