Это проблема, с которой я постоянно сталкивался в классе последовательного порта в .NET 2.0. Было предложено, чтобы обновление до .NET 4 решило проблему ... и это произошло почти во всех случаях.
Если я использую встроенный в .NET класс последовательного порта для связи с адаптером USB-последовательный порт, и адаптер неожиданно отключается при открытом порту, иногда я получаю необработанное исключение:
Application: test.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ObjectDisposedException
Stack:
at System.Runtime.InteropServices.SafeHandle.DangerousAddRef(Boolean ByRef)
at System.StubHelpers.StubHelpers.SafeHandleAddRef(System.Runtime.InteropServices.SafeHandle, Boolean ByRef)
at Microsoft.Win32.UnsafeNativeMethods.GetOverlappedResult(Microsoft.Win32.SafeHandles.SafeFileHandle, System.Threading.NativeOverlapped*, Int32 ByRef, Boolean)
at System.IO.Ports.SerialStream+EventLoopRunner.WaitForCommEvent()
at System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.ThreadHelper.ThreadStart()
Опять же, в большинстве случаев все работает нормально. На самом деле, я даже не могу воспроизвести проблему на своих компьютерах. Это происходит с моим другом. Можно ли вообще как-то отловить эту ошибку?
Редактировать: Мне удалось воспроизвести поведение самостоятельно. Сейчас я экспериментирую, но все еще не могу понять, что вызывает эту ошибку в .NET 4.0.
Редактировать 2: Кажется, что только происходит в Windows 7. Отключение и подключение адаптера USB-to-serial в XP прекрасно работает.