В настоящее время я использую TcpListener для адресации входящих соединений, каждому из которых предоставляется поток для обработки связи, а затем выключение этого единственного соединения. Код выглядит следующим образом:
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();
}
Переменная listen - это логическое поле, которое является полем класса. Теперь, когда программа отключается, я хочу, чтобы она перестала слушать клиентов. Настройка прослушивания false не позволит ему подключаться к большему количеству подключений, но поскольку AcceptTcpClient является блокирующим вызовом, он, как минимум, должен сделать следующий клиент и выйти THEN. Есть ли способ заставить его просто вырваться и остановиться, прямо тут и там? Какой эффект вызывает вызов listener.Stop() во время выполнения другого блокирующего вызова?