Die Aufgeführte Methode zur ermittlung aller COM-Port ist nicht effizient oder vieleicht sogar falsch (unter Windows).
Es wird in einer schleife, nacheinander aller COM-Port geöffnet. Im Fall das der COM-Port nicht verfügbar ist, wird eine Exception ausgeworfen (ggf. nach Timeout). Wenn der Benutzer auf seinen Rechner einige Hardwaretreiber installiert hat, wie z.B. Bluetooth, Virtual COM-Port etc., kann dieses verfahren (unnötig) erhebliche Zeit in Anspruch nehmen.
Unter Windows werden alle verfügbaren COM-Port in der Registry aufgelistet. Man könnte jetzt die COM-Port-List aus der Registry laden (Ich bitte um Nachsicht, da ich den Pfad und Schlüssel gerade nicht zur Hand habe), oder man benutzt die fertige Methode aus dem .Net Framework, welche einen diese Arbeit abnimmt:
string[] portNames = System.IO.Ports.SerialPort.GetPortNames();