今天在使用個人通訊框架,建立基於串口通訊的客戶端時,出現這樣一個BUG:緩存
- 未處理 System.ObjectDisposedException
- Message=已關閉 Safe handle
- Source=mscorlib
- ObjectName=""
- StackTrace:
- 在 System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean& success)
- 在 System.StubHelpers.StubHelpers.SafeHandleAddRef(SafeHandle pHandle, Boolean& success)
- 在 Microsoft.Win32.UnsafeNativeMethods.GetOverlappedResult(SafeFileHandle hFile, NativeOverlapped* lpOverlapped, Int32& lpNumberOfBytesTransferred, Boolean bWait)
- 在 System.IO.Ports.SerialStream.EventLoopRunner.WaitForCommEvent()
- 在 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
- 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
- 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
- 在 System.Threading.ThreadHelper.ThreadStart()
- InnerException:
當這個BUG出現時,程序直接崩潰,沒法跟蹤到錯誤代碼位置。app
通過一番測試,查找問題。發如今一個函數內利用SerialPort建立了串口通訊實例後,沒有將該實例放入任何其餘容器中進行緩存,從而致使了上述崩潰BUG的產生。框架
後來修改代碼,將該實例放入了一個全局變量List<通訊客戶端>集合中,該BUG得以解決。函數
原文地址:https://blog.csdn.net/yeqi3000/article/details/41983517oop