假设有如下代码所示的多线程:
1 private void btnNewThread_Click(object sender, EventArgs e) 2 { 3 Thread t = new Thread(new ThreadStart(Test)); 4 t.Start(); 5 this.btnNewThread.Enabled = false; 6 } 7 private void Test() 8 { 9 //…… 10 }
这个新建的线程t在执行完Test()方法后会自动销毁吗?还是需要写代码手动销毁呢?
下面就多线程的非主线程销毁机制做个总结:
1).t结束就自动销毁了
2).设置线程属性IsBackground=true
将线程t作为后台线程,随着主线程结束而一起结束,不管这个线程有没有执行完。
3).手动销毁
可以在创建线程的时候加个线程名,然后存放到线程池里,在要销毁的时候从线程池找到对应线程销毁。