2009-11-15 108 views
1

我剛剛開始使用C#。我正在運行一個對象的函數作爲一個線程(新線程(myFunc).Start())。我應該殺死一個以線程運行的函數(.Net)

該函數完成後該線程是否自行終止,或者必須手動將其刪除?如果我必須,最好的辦法是什麼(我可能不知道什麼時候結束等)?

Thanx!

回答

7

是的,當函數返回時線程將退出。如果它是一個長時間運行的任務,並且您希望在程序退出前確定它已完成,則可以使用Thread.Join,這將阻塞主線程,直到其他線程完成。

2

線程持續其功能的持續時間;該功能完成後,線程將自動死亡。

但是,如果您想在後臺執行相對較快的功能,最好使用ThreadPool而不是爲其啓動一個新線程。通過使用ThreadPool,您將重新使用由.Net框架自動維護的一組線程,並且您將避免創建新線程的開銷。

例如:

ThreadPool.QueueUserWorkItem(delegate { myFunc(); });