我目前正在使用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();
}
Run Code Online (Sandbox Code Playgroud)
该listen变量是一个布尔值,是在类的字段.现在,当程序关闭时,我希望它停止监听客户端.设置听false会阻止它承担更多的连接,但由于AcceptTcpClient是一个阻塞调用,它将在最低采取下一个客户端,然后退出.有没有办法迫使它简单地突破并停止,就在那时?调用listener.Stop()有什么影响,而另一个阻塞调用正在运行?