Port schließen


coolfire

Grünschnabel
Hallo,
ich habe meinen Listener so geschreiben:
.....
private static TcpListener listener = null;
.....
listener = new TcpListener(ipText,Port);
listener.Start();
....
listener.Stop();

Meine Frage:
Wenn ich mein Programm mit einem externen Programm beende(terminate Process) ist mein Port immernoch offen. Wenn ich das Programm wieder starten will kommt folgende Exception:
Only one usage of each socket address is normally permitted.
Wie kann ich also den Port schließen bevor ich meinen Listener starte?
 

Divi

Erfahrenes Mitglied
Das ist auch genau mein Problem momentan ... aber da das hier am 04.12.03 bereits diskutiert wurde, geh ich mal davon aus, dass keiner ne Antwort hat, wa?
 

Christian Kusmanow

Erfahrenes Mitglied
Du könntest für deine Klasse, die die Verbindung verwaltet das IDisposable implementieren.
Innerhalb der IDisposable Implementation schießt Du dann den Port.
Die IDisposable Implementation wird beim nullen oder verwerfen der Klasse aufgerufen.

Wenn aber der Prozess gekillt wird, bekommt das Objekt keine Chance die IDisposable Implementation aufzurufen.
Versuch ihn also einfach zu schließen anstatt ihn zu killen. Also anstatt Process.Kill() machst ein Process.Close()

[thread=213583]Memory Leak in Compact Framework - Thread[/thread]

MfG,
cosmo