我用udp做多聊天程序,在form_load里打开一个线程进行监听,但是当我关闭窗体时,程序却并不结束,只是窗体关闭了,程序线程依然在执行,请问怎样结束整个程序,和所有的相关线程???

解决方案 »

  1.   

    thread.Join(500);//同步等500豪秒看thread.ThreadState,还没结束,就 thread.Abort();
      

  2.   

    when you create the thread, try to set its IsBackground = true
    BackgroundTest longTest = new BackgroundTest(50);Thread backgroundThread = 
                new Thread(new ThreadStart(longTest.RunLoop));
    backgroundThread.Name = "BackgroundThread";backgroundThread.IsBackground = true;backgroundThread.Start();
      

  3.   

    1、把所有所有的线程都设置成.IsBackground=true;
    2、尽量在dispose中关闭你的线程程序。Thread.Abort()
    3、最好将线程中的while的条件设置成可以更改的true/false,推出的时候也可以用这个停止线程序
      

  4.   

    1、把所有所有的线程都设置成.IsBackground=true;
    2、尽量在dispose中关闭你的线程程序。Thread.Abort()
    3、最好将线程中的while的条件设置成可以更改的true/false,推出的时候也可以用这个停止线程序
      

  5.   

    //线程过程中if(关闭变量==True)
    Thread.CurrentThread.Abord();================================================================
    巅峰之道,高瞻才能远瞩;
    实力之道,厚积而薄发;东莞打工者创业论坛:
    http://211.148.133.100/work/
    ================================================================
      

  6.   

    在程序退出处添加上:
            Application.ExitThread();
            Application.Exit();另外建议你在窗体的close代码里面添加thread.Abort();
      

  7.   

    我也在写一个聊天的程序,我也遇到了这个问题,你问的真是太及时了可以把你的程序法给我看看吗,我也可以把我写的给你,共同学习一下
    [email protected]
      

  8.   

    这是因为你没有把线程设置为后台线程的原因,
    你可以将线程的IsBackground属性设置为true,使其变为后台线程,
    后台线程在主程序结束时会自动中止,也就不会出现你说的那个情况了,这是初学线程很容易碰到的问题
      

  9.   

    backgroundThread.IsBackground = true;必须设计为后台线程,这样才能用Abort等方法结束线程。