日期:2014-05-17  浏览次数:20981 次

多线程的非主线程是否会自动销毁
这是在一个WinForm程序中,一个Button按钮的单击事件

private void button1_Click(object sender, EventArgs e)
        {
            Thread t = new Thread(new ThreadStart(Test));
            t.Start();
            this.button1.Enabled = false;
            this.button2.Enabled = false;
        }
private void t()
      {
           int i = 1;
           ……
       }



当另外的线程启动后,会去执行t方法,当这个方法执行完后,这个线程是自动销毁吗?还是需要我另外写一个方法来不断查看这个线程是否执行完了,然后写代码把其销毁?

------解决方案--------------------
如果楼主怕线程没销毁可以在创建的时候加个线程名 然后存放到线程池里 在要销毁的时候循环线程池逐一销毁 如果是后台线程会在主线程结束的时候自动销毁
list<Thread> ThreadList=new list<Thread>//创建线程池
             for(int i=0;i<100;i++)               //建立线程
             { Thread newt = new Thread(方法);
               newt.name = "Thread" + i.Tostring();
               ThreadList.add(newt.name);
               newt.start();              
               }
               foreach(Thread t in ThreadList)//将线程池里的线程逐一拉出来销毁
               {
                     t.abort();
               }