上面read()函数不太清楚,再发一遍:
private void read ()
{
 remote = null ;
                   udpclient = new UdpClient (9000) ;
          Encoding enc = Encoding.Unicode ;
 while (ReadFlag == true )  //ReadFlag
{
      
Byte[] data = udpclient.Receive ( ref remote ) ;
// Byte[] data = udpclient.Receive ( ref RemoteIpEndPoint) ;
//得到对方发送来的信息
// String strData = enc.GetString ( data ) ;
        string strData = Encoding.ASCII.GetString(data);
//获取传送信息到本地端口号的远程计算机IP地址
string remoteIP = remote.Address.ToString ( ) ;
//显示接收信息以及传送信息的计算机IP地址
// this.textBox1.AppendText( remoteIP + ":" + strData ) ;
         strReceive=strData;
remoteIP2=remoteIP;
        }
    }

解决方案 »

  1.   

    关闭连接一般都是需要一段时间的,比如Windows的拨号连接。以前在VC里面做RAS方面的项目,一般都在close连接之后Sleep(3000),防止连接没有完全关闭,程序就退出了。
      

  2.   

    但为什么第一次运行这个子窗体开启UdpClient再单击button2关UdpClient闭服务时运行很慢(总觉
    这会给人一个很不好的感觉,比如程序有毛病...);而以后再打开这个子窗体时做同样的操作就不
    会出现这种情况呢?请大家帮忙还有没有更好的做法,
      

  3.   

    你把线程的isbackground设为true,第地次打开子窗体时启动线程,以后打开子窗体时把这个线唤醒(可通过设一个标置实现)关闭子窗体前把该线程挂起,将不会产生慢的感觉,同时
    退出父窗体会关闭启动UdpClient的线程。