我有一段代码在一个单独的线程(任务)中运行,这个线程会在应用程序启动时首先运行,并且直到应用程序关闭才结束:
TcpListener tcpListener = new TcpListener(IPAddress.Any, port);
tcpListener.Start();
while (true)
{
TcpClient client = tcpListener.AcceptTcpClient();
Task.Factory.StartNew(HandleClientCommunication, client);
}
在这种情况下,是否需要调用
tcpListener.Stop()
?这个线程在整个应用程序运行期间都在运行,如果我确实需要调用它,那么我应该在哪里调用呢?监听器是本地线程的。我可以使用 while (appRunning)
循环而不是 while (true)
循环,并在 FormClosing 事件中将 appRunning 设置为 false 吗?然后在 while 循环之后,我可以调用 tcpListener.Stop()
。然而,在这个时候是否有必要调用
TcpListener.Stop()
呢?因为应用程序已经关闭了,而且由于我正在使用任务,进程也结束了。