假設有如下代碼所示的多線程:
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).手動銷毀
可以在創建線程的時候加個線程名,然後存放到線程池裡,在要銷毀的時候從線程池找到對應線程銷毀。