C'est un problème que j'ai toujours eu avec la classe de port série dans .NET 2.0. Il a été suggéré que la mise à niveau vers .NET 4 réglerait le problème ... et cela dans presque tous les cas. Si j'utilise la classe de port série intégrée à .NET pour communiquer avec un adaptateur USB-série et que l'adaptateur est débranché de façon inattendue alors que le port est ouvert, une exception non gérée est parfois générée:Port série .NET 4 ObjectDisposedException sur Windows 7 uniquement
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()
Encore une fois, la plupart du temps cela fonctionne très bien. En fait, je ne peux même pas reproduire le problème sur mes propres ordinateurs. Cela arrive à un de mes amis. Est-il possible de piéger cette erreur?
Modifier: J'ai été capable de reproduire le comportement moi-même. J'expérimente maintenant, mais je suis toujours perplexe quant aux causes de cette erreur dans .NET 4.0.
Edit 2: Cela semble que arrive sur Windows 7. débranchant et en branchant l'adaptateur USB-série sur XP fonctionne à merveille.
Étrange, je ne pourrais jamais obtenir que cela fonctionne. J'ai longtemps abandonné la classe Serial intégrée de Microsoft, et je suis parti avec une tierce partie. – Brad
Assez juste, je ne pense pas que quiconque essaierait et argumenter que c'est un mauvais choix :) –