hallo, ich habe zwei messgeräte an einem pc die beide über seriellen Port kommunizieren. Da es ja nur einen seriellen port gibt, haben wir ein adabter auf usb genommen und das zweite gerät an einen usb port angeschlossen. Klappt an sich auch wunderbar, jedoch nach einer weile scheint es so als würde sich der usb abmelden oder irgendwas anderes, auf jedenfall bekommen wir folgende fehlermeldung
System.ObjectDisposedException wurde nicht behandelt.
Message="Das SafeHandle wurde geschlossen."
Source="System"
ObjectName=""
StackTrace:
bei Microsoft.Win32.UnsafeNativeMethods.GetOverlappedResult(SafeFileHandle hFile, NativeOverlapped* lpOverlapped, Int32& lpNumberOfBytesTransferred, Boolean bWait)
bei System.IO.Ports.SerialStream.EventLoopRunner.WaitForCommEvent()
bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Threading.ThreadHelper.ThreadStart()
Kann jemand was damit anfangen? Leider findet man zu diesem Thema recht wenig und nicht wirklich was brauchbares
Ich würde das gerne noch einmal nach oben bringen da ich gerade den gleichen Fehler bekomme. Wir haben ebenfalls ein über USB angeschlossenes Serial-Modul, das bisher auch wunderbar funktionierte. Ich programmiere gerade eine Fehlerbehandlung falls das Modul während dem Zugriff herausgezogen wird. In diesem Fall wird eine Fehlermeldung ausgegeben und die Erkennung erneut gestartet. Dies Funktioniert auch meistens, ab und zu kommt aber die ObjectDisposedException mit folgenden Details:
System.ObjectDisposedException wurde nicht behandelt.
Message="Das SafeHandle wurde geschlossen."
Source="System"
ObjectName=""
StackTrace:
bei Microsoft.Win32.UnsafeNativeMethods.WaitCommEvent(SafeFileHandle hFile, Int32& lpEvtMask, NativeOverlapped* lpOverlapped)
bei System.IO.Ports.SerialStream.EventLoopRunner.WaitForCommEvent()
bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Threading.ThreadHelper.ThreadStart()
Die normale SerialPort-Klasse hat keine Sonderbehandlung von COM-Ports, die "verschwinden" (Herausziehen des USB-Adapters). Hier bleibt nur die Exception zu fangen und entsprechend zu behandeln.
hey,
ich bekomme die gleiche Fehlermeldung, PLUS selbst wenn ich die Exception abfange und zwar mit IOException (normale Exception - Exception ex bspw. - funktioniert nicht) beendet sich meine Anwendung. Vlt. hat in der Zwischenzeit ja jemand ne lösung gefunden???
mfg
mex
que? como? no entiendo!!!!!
und wenn das nicht möglich ist, da das angeschlossene zu verwendende Gerät nur mit USB-Anschluss erhältlich ist!
que? como? no entiendo!!!!!
Dann wird es mit der SerialPort-Klasse nicht zu lösen sein.
damit ich das jetzt endgültig richtig verstanden habe, es kennt niemand einen Lösungsansatz bzgl. des Exception Handlings um dieses Problem in den Griff zu bekommen!?
que? como? no entiendo!!!!!
Wo ist das Problem? Wenn du eine IOException bekommst fängst du das Teil ab und gehst davon aus, dass der Port weg ist.
hier liegt das problem:
... selbst wenn ich die Exception abfange und zwar mit IOException (normale Exception - Exception ex bspw. - funktioniert nicht) beendet sich meine Anwendung...
egal welche ex ich fange, die anwendung beendet sich!!!!!
que? como? no entiendo!!!!!
probier mal, ob du mit Application.ThreadException die Ausnahme fangen und behandeln kannst.
Hallo,
hat dieses Problem mittlwerweile jemand gelöst?
Ich hab nämlcih das gleiche Problem in einer .net2.0-Anwendung, die auch die SerialPort-Klasse nutzt.
Mit Application.ThreadException läßt sie sich bei mir auch nicht fangen. Ich bekomme lediglich in AppDomain.CurrentDomain.UnhandledException mit das die Ausnahme auftritt, aber dann schmiert die Anwendung ab, ohne dass ich es verhindern kann.
Weiß jemand Rat?
Hallo,
ich hatte jetzt das selbe Problem, und vielleicht kann jemand etwas mit der Lösung anfangen, aber ich weiß nicht, ob das Augangsproblem dasselbe wie meins war. Ich habe einen Thread, in dem immer über die SerialPort-Klasse von der seriellen Schnittstelle gelesen wird (über einen USB-Adapter). Verschwindet der Port, gibt es eine IOException, welche in dem lesenden Thread abgefangen werden muss.
Der SerialPort darf auch nicht von außen geschlossen werden, sondern nur in dem Thread selbst: klick.
Hoffentlich helfen diese Anregungen jemandem.