你为什么要用timer呢, tcpListener.AcceptSocket本来就是阻塞执行的,你还用timer,这有什么用吗

解决方案 »

  1.   

    Time到时间执行的,
    所以执行ListenTimer_Tick函数完,就关闭监听了
      

  2.   

    Accept和Receive都是阻塞方法,干吗要放到Timer里面????
    定时重复执行,等于是多个线程一起控制tcpListener,那还不乱套了。
      

  3.   

    进程所执行的Listen的中的
    while(listenerRun)
    {
    Socket s = tcpl.AcceptSocket();
    Byte[] strem = new byte[80];
    int i = s.Receive(strem);
    string message = System.Text.Encoding.UTF8.GetString(strem);
    TBContent.AppendText(message);
    }去掉。
      

  4.   

    我现在还有一个疑问,在最开始的这个里面
    我想设置成每接受一条消息就显示另外一个Form
    所以程序就改成了
    while(listenerRun)
    {
    Socket s = tcpl.AcceptSocket();
    Byte[] strem = new byte[80];
    int i = s.Receive(strem);
    string message = System.Text.Encoding.UTF8.GetString(strem);
    TBContent.AppendText(message);
             FloatForm floatform = new FloatForm();
    floatform.Show();
    }
    可是这里这个floatform显示出来就没有了响应
    是floatform没有响应,不是主程序没有响应
    这是为什么呢?
      

  5.   

    floatform.Show();
    这个东东是堵塞的,如何一边显示窗口一边还要干其它的,这个窗口需要另外再启动一个线程来显示。
      

  6.   

    to  Lastcsdner(外行)
    我把程序改成这样
    Thread floatThread = new Thread(new ThreadStart(ShowFloat));
    floatThread.Start();
    其中这个ShowFloat是这样的
    private void ShowFloat()
    {
    FloatForm floatform = new FloatForm();
    floatform.Show();
    }
    可是这样的话新窗口总是闪一下就消失了
    这个线程自动被释放掉了
    怎么办才能让它不消失或者过一段特定时间后再消失呢?
    多谢