Tag: blocked threads

取消阻止AcceptTcpClient调用

众所周知,在C#中接受传入TCP连接的最简单方法是循环使用TcpListener.AcceptTcpClient()。 此外,这种方式将阻止代码执行,直到获得连接。 这对GUI非常有限,所以我想在单独的线程或任务中监听连接。 我被告知,线程有几个缺点,但没有人解释我这是什么。 所以我没有使用线程,而是使用了任务。 这很好用,但是由于AcceptTcpClient方法阻塞了执行,我找不到任何处理任务取消的方法。 目前代码看起来像这样,但是当我希望程序停止侦听连接时,我不知道如何取消任务。 首先关闭任务中执行的function: static void Listen () { // Create listener object TcpListener serverSocket = new TcpListener ( serverAddr, serverPort ); // Begin listening for connections while ( true ) { try { serverSocket.Start (); } catch ( SocketException ) { MessageBox.Show ( “Another server is currently listening at port […]