Este es un problema que solía tener todo el tiempo con la clase de puerto serie en .NET 2.0. Se sugirió que la actualización a .NET 4 solucionaría el problema ... y lo hizo en casi todos los casos..NET 4 Serial Port ObjectDisposedException en Windows 7 solamente
Si utilizo la clase de puerto serie incorporada en .NET para comunicarme con un adaptador de USB a serie, y el adaptador se desenchufa inesperadamente mientras el puerto está abierto, en ocasiones recibo una excepción no controlada:
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()
De nuevo, la mayoría de las veces funciona bien. De hecho, ni siquiera puedo reproducir el problema en mis propias computadoras. Esto le sucede a un amigo mío. ¿Hay alguna manera de atrapar este error?
Editar: Tuve la oportunidad de reproducir el comportamiento yo. Estoy experimentando ahora, pero todavía estoy perplejo sobre qué causa este error en .NET 4.0.
Edición 2: Esto parece solamente sucede en Windows 7. desenchufar y enchufar el adaptador de USB a serie en XP funciona muy bien.
Extraño, nunca podría hacer que eso funcione. Hace tiempo que renuncié a la clase serial incorporada de Microsoft y me he ido con terceros. – Brad
Justo lo suficiente, no creo que nadie intente y argumente que es una mala elección :) –