TCPListener.AcceptTcpClient阻塞进程退出方法

   private void btnStop_Click(object sender, RoutedEventArgs e)
              {
                 bIsExecute = false; //此处拆除循环条件

              
            //方法1:直接停止监听套接字,引发异常从而强行使Accept退出阻塞。
            //---------------------------------------------
            //if (listener != null)
            //{
            //    listener.Stop();
            //}
            //---------------------------------------------
 
            
            //方法2:主动发送一条数据,使Accept自然地退出阻塞。
            //---------------------------------------------
            TcpClient tcpClient = new TcpClient();
            tcpClient.Connect("127.0.0.1",9000);
 
            NetworkStream ns = tcpClient.GetStream();
            if (ns.CanWrite)
            {
                Byte[] sendBytes = Encoding.ASCII.GetBytes("Exit");
                ns.Write(sendBytes, 0, sendBytes.Length);
                lbMsg.Items.Add("发送退出命令成功!");
            }
            else
            {
                lbMsg.Items.Add("发送退出命令失败!");
                return;
            }
            ns.Close();
            tcpClient.Close();
            //---------------------------------------------
 
            btnStart.IsEnabled = true;
            btnStop.IsEnabled = false;
        }

————————————————
版权声明:本文为CSDN博主「西刷君」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yijun494610095/java/article/details/55257787

原文地址:https://www.cnblogs.com/swobble/p/13023765.html