Serial Port richtig schliessen bei Exception

10/05/2010 - 21:14 von Michael Thelen | Report spam
Hallo NG,

ich wüsste gerne die best practice den Serial Port richtig zu
schliessen, wenn eine Exception auftritt. Habe da mehrere Möglichkeiten
gefunden und bin mir unsicher. Im Moment sieht es so aus:

public void CloseWinKey() {
if (this.IsWinKeyOpen) {
this.SendWinKeyCommand(AdminCommands.BuildHostCloseCommand());
try {
winKeyPort.Close();
winKeyPort.DtrEnable = false;
this.IsWinKeyOpen = false;
}
catch (Exception ex) {
throw new WinKeyCommunicationException(
"There is a problem with the underlying
COM-Port used. Check inner exception for details.", ex);
}
}
}

Wenn jetzt bei Close() eine Exception auftritt, sollte man versuchen im
finally Block noch mal zu schliessen? Oder hàngt das Vorgehen von der
Art der Exception ab?

Im Prinzip stelle ich mir dieselbe Frage auch bei einem Read oder Write?
Sollte man bei einem Timeout das ganze noch mal probieren und nur bei
den anderen möglichen Exceptions den Port versuchen zu schließen?

Gruß
Michael
 

Lesen sie die antworten

#1 Frank Dzaebel
11/05/2010 - 07:42 | Warnen spam
Hallo Michael,

ich wüsste gerne die best practice den Serial Port richtig zu
schliessen, wenn eine Exception auftritt. Habe da mehrere Möglichkeiten
gefunden und bin mir unsicher. Im Moment sieht es so aus:



Da gibt es mehrere Aspekte, die eben u.a. stark von
Deinem Kontext (Threading, GUI, etc.) abhàngen.

["Safe handle has been closed" with SerialPort and a thread in C# - Stack
Overflow]
http://stackoverflow.com/questions/...hread-in-c

[BCL Team Blog : Top 5 SerialPort Tips [Kim Hamilton]]
http://blogs.msdn.com/bclteam/archi...5D00_.aspx

[Anthony Wong's Blog : Deadlock issue on closing SerialPort]
http://blogs.msdn.com/anthonywong/a...42625.aspx

[Uncatchable Exception Thrown When Disposing SerialPort]
http://social.msdn.microsoft.com/Fo...6c6468ec65

[SerialPort Crashes after disconnect of USB COM port | Microsoft Connect]
http://connect.microsoft.com/Visual...b-com-port

[Suchergebnisse für "SerialPort" "Close" | Microsoft Connect]
http://connect.microsoft.com/Visual...rt%2bClose


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen