Proper Weg, um TcpListener @ zu stopp

Ich verwende derzeit TcpListener, um eingehende Verbindungen zu adressieren, von denen jede einen Thread für die Verarbeitung der Kommunikation erhält und diese einzelne Verbindung dann beendet. Code sieht wie folgt aus:

TcpListener listener = new TcpListener(IPAddress.Any, Port);
System.Console.WriteLine("Server Initialized, listening for incoming connections");
listener.Start();
while (listen)
{
     // Step 0: Client connection
     TcpClient client = listener.AcceptTcpClient();
     Thread clientThread = new Thread(new ParameterizedThreadStart(HandleConnection));
     clientThread.Start(client.GetStream());
     client.Close();
}

Daslisten Variable ist ein Boolescher Wert, der ein Feld in der Klasse ist. Wenn das Programm beendet wird, soll es nicht mehr auf Clients warten. Hörprobe auf @ einstellfalse verhindert, dass es weitere Verbindungen aufnimmt, aber daAcceptTcpClient ist ein blockierender Aufruf, es wird mindestens der nächste Client genommen und DANN beendet. Gibt es eine Möglichkeit, es zu zwingen, einfach auszubrechen und anzuhalten, genau dann und dort? Wie wirkt sich der Aufruf von listener.Stop () aus, während der andere blockierende Aufruf ausgeführt wird?

Antworten auf die Frage(18)

Ihre Antwort auf die Frage