2009-10-21 94 views
0

這是我的問題: 我有一堆線程,每個線程都會完成它的工作,然後在第一次線程正常工作時返回到堆棧 完成作業後,如果我想從中彈出堆棧 再次運行:將出現異常,表示此線程正在運行或終止,無法重新啓動.... 是否允許多次運行線程? 謝謝...我可以多次運行一個線程嗎?

回答

5

聽起來像你想要實現自己的線程池。改爲使用System.Threading.ThreadPool

接下來,將您的Stack{Thread}轉換爲Stack{Action}。從堆棧中彈出項目,使用內置線程池運行它們,然後根據需要將項目返回到堆棧。

1

您是否使用內置的ThreadPool對象?這可能是分配和重用線程的最佳選擇。

+0

我只是定義線程,然後將它們推入堆棧 您能否解釋更多如何使用線程池? – Hany 2009-10-21 15:22:32

5

您不能多次運行一個線程。一旦線程完成,就完成了。

如果你想重用線程,你最好的選擇是使用框架的ThreadPool。它會自動處理你的「工作」,並將它推入一個免費的線程,調度和排隊任務,因爲你正在使用所有可用的線程而無法運行。

+0

感謝我的朋友裏德我會檢查threaPool – Hany 2009-10-21 15:23:49