检查代码,看是否多次执行了StartListening

解决方案 »

  1.   

    估计你的ReStartProgram这个流程没有把之前的socket关闭就重新绑定了端口
      

  2.   

    那就说明 3024  又一次被使用了。  catch捕获异常后,重新启动之前 没有释放端口。
      

  3.   

    ReStartProgram()这个方法看看有没有关闭socket
      

  4.   

    检查下是不是下面两种可能:
    1、ReStartProgram();的时候,程序进程还在,这就导致出现两个运行的exe
    2、代码里面多次调用了StartListening方法
      

  5.   

    既然你这个代码里出现了ReStartProgram();
    别的代码里说不定也出现了ReStartProgram();
    所以你应该先测试当程序重启的时候是否就一定会发生这个错误
      

  6.   


    myListener = new TcpListener(IPAddress.Parse(m_serverIP), int.Parse(m_serverPort));  
    myListener.Start();
    myListener = new TcpListener(IPAddress.Parse(m_serverIP), int.Parse(m_serverPort));  
    myListener.Start();
    执行2次 就报错..所以你自己检查下逻辑吧
      

  7.   

    经测试
    在       
          
            /// 重新启动本程序
            /// </summary>
            private void ReStartProgram()
            {
                //通过停止监听让myListener.AcceptTcpClient()产生异常退出监听线程
                myListener.Stop() ;  //添加这句代码后就没问题了。
            
                。
            }
      /// <summary>在重启程序时,先关闭监听线程就好了,谢谢大家