Fragensteller
serialPort.close() bleibt hängen

Allgemeine Diskussion
-
Hallo zusammen.
Mein Programm liest einen Com Port über das Ereignis DataReceived aus.
Das funktioniert auch einwandfrei.
Das Schließen des Ports funktioniert ebenfalls, solange keine Daten empfangen werden.
Werden Daten empfangen (in relativ schneller Abfolge), bleibt das Programm in serialPort.close() hängen. Ohne eine Exception auszulösen.
Woran kann das liegen? Was ist die Lösung?Danke schon mal.
Jens- Typ geändert Robert Breitenhofer Donnerstag, 5. April 2012 16:05 Keine Rückmeldung des Fragenstellender
Alle Antworten
-
Hallo nochmal.
Mittlerweile habe ich einiges herausgefunden.
Zum einen habe ich den Threadaufruf zum schreiben der empfangenen Daten von Invoke auf BeginInvoke gesetzt.
Siehe hierzu Tip 3 in Top 5 SerialPort Tips.
Danach sind die Abstürtze seltener geworden, bzw. seltener reproduzierbar.Danach habe ich vor dem Schließen des Ports die Zuweisung des DataReceivedEventHandler entfernt.
serialPort1.DataReceived -= new SerialDataReceivedEventHandler(serialPort1_DataReceived); Thread.Sleep(100); if (serialPort1.IsOpen) { serialPort1.Close(); } serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
Nun habe ich den Effekt, dass das Programm zwar hängen bleibt, aber (und jetzt wird's sonderbar) mit zwei Rechtsklicks auf den Fensterbutton in der Taskleiste "fängt" sich das Programm wieder und läuft ganz normal weiter.
Hat Irgendjemand eine Idee dazu?
Gruß Jens- Bearbeitet Jens Jung Freitag, 2. März 2012 09:54
-
Hallo Jens Jung,
der SerialPort kann relativ Tricky sein, da er das SerialDataReceivedEvent in einem separaten Thread abhandelt. Aber erkläre mir bitte mal, warum du den SerialPort schliesst und danach einen EventHandler an das DataReceivedEvent ranhängst (?).
Vielleicht zeigst du mal mehr Code der den serialPort1 betrifft, sonst ist eine Aussage nur schwer möglich...
Viele Grüße
Holger M. RößlerKaum macht man es richtig, schon funktioniert es
-
****************************************************************************************************************
Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
****************************************************************************************************************Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.