Frage

Vista SP1 Visual Studio 2008 SP1 .NET 3.5 SP1 C #

Ich habe eine WinForms-Anwendung ich mit, dass verwendet ein Serialport-Objekt als private Variable bin zu spielen. Wenn die Anwendung kompiliert und ausgeführt, es funktioniert super. Es funktioniert auch wihtout alle Haltepunkte im Debug-Modus ausgeführt wird. 90% der Zeit, als ich an einem Haltepunkt zu stoppen und versuchen, durch Code zu Schritt mir eine Dialog mit diesen Details ‚nicht behandelte Ausnahme aufgetreten‘:

System.ObjectDisposedException wurde nicht behandelt   Message = „Sicherer Griff wurde geschlossen“   Source = "mscorlib"   ObjektName = „“   Stacktrace:        bei Microsoft.Win32.Win32Native.SetEvent (SafeWaitHandle Griff)        bei System.Threading.EventWaitHandle.Set ()        bei System.IO.Ports.SerialStream.AsyncFSCallback (UInt32 errorcode, UInt32 numBytes, Native * pOverlapped)        bei System.Threading._IOCompletionCallback.PerformIOCompletionCallback (UInt32 errorcode, UInt32 numBytes, Native * pOVERLAP)   Innerexception:

Die frustrierende Sache ist, ich habe nicht über seriellen bezogenen Code zu treten! Ich habe nur getan haben, etwas mit dem Hafen. So könnte ich einen String lesen, manipulieren die Zeichenfolge, fügen Sie zwei Zahlen zusammen, was auch immer, und dann BANG.

Auch dies funktioniert gut, wenn sie nicht debuggen, oder wenn wihtout irgendwelche Haltepunkte debuggen. Es scheint an einem Haltepunkt etwas zu sein, um zu stoppen, die die CLR die SerialStream auf einem anderen Thread entsorgen macht.

Es gibt eine Menge von Chatter Online über Probleme mit renoving USB-Geräte verursacht dies. Aber ich bin mit dem build-in-Motherboard-Anschluss an COM1.

Ich glaube nicht, dass ich in .NET 2.0 dieses Problem hatte, so kann ich wieder auf das gehen müssen ...

Ich brauche die Anwendung einiges zu vereinfachen, bevor ich Code schreiben können - aber das Verhalten wie dies im Debugger hat jemand gesehen, bevor

Vielen Dank!

War es hilfreich?

Lösung

Ich hatte das gleiche Problem nur an diesem Morgen. Überraschenderweise hat es einfach weggegangen, als ich die folgenden Optionen in VS2008 Tools- GESPERRT> Optionen-> Debugging-> Allgemein:

  • "Aktivieren Sie die Ausnahme Assistent"
  • "Enable .NET Framework Source Stepping"
  • "Schritt über Eigenschaften und Operatoren"
  • "Enable Eigenschaftsbewertung und andere implizite Funktionsaufrufe"

Ich habe keine Ahnung, warum, aber es funktioniert für mich.

Andere Tipps

Vielleicht ist Ihr Port wird immer durch das Betriebssystem geschlossen, da es keine Antwort von der Anwendung bekommt (es an einem Breakpoint gestoppt wird).

Nun, ich bin nicht so sicher, dies ist eine Antwort, aber es war auf jeden Fall etwas über das Projekt. Es wurde ursprünglich in 2.0 geschrieben und umgewandelt in 3,5 von VS2008. Ich habe ein neues Projekt in C # -Express 2008 Hinzufügen der ursprünglichen Klassen one-by-one und es wie ein Zauber funktioniert jetzt! Keine Ahnung, was anders ist.

Ich habe das auch. Das muss eine Art von Fehlern mit dem Debugger sein. Die obige Beratung gearbeitet: Deaktivieren Sie die „Enable Eigenschaftsbewertung und andere implizite Funktionsaufrufe.“

Ich habe eine Klasse mit Eigenschaften, die serielle I / O tun. Ich dachte, dass vielleicht der Debugger helfend versucht, den Eigenschaftswert anzuzeigen, wenn ich mit der Maus über sie schwebte, so dass der IO vom Debugger Thread zu tun. Aber das scheint nicht der Fall zu sein. Ich bin wirklich nicht sicher, was die Ursache ist.

Ich hatte das gleiche Problem und hat die folgenden:

serialPortLock = Monitor.TryEnter(serialPort, 3000);
Thread.Sleep(5);
serialPort.Write(msg, 0, msg.Length);

und das gleiche gilt für meine Read (). Sieht aus wie es eine gute Abhilfe für mich ist!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top