我正在做一些C#線程。沒有任何問題啓動線程並將數據傳輸給它們,但我在等待它們結束時遇到問題。等待線程結束的問題
我的代碼如下所示。我使用Join()
來等待線程結束,但由於某種原因,我的代碼無法工作。
儘管在所有活動線程上調用Join()
,主線程(即for循環)仍未被阻止。
任何想法,我做錯了嗎?
List<Thread> calculationThreads = new List<Thread>();
foreach (string calculation in calculations)
{
if (calculationThreads.Count < 5)
{
Thread calculationThread = new Thread(DoCalculation);
calculationThreads.Add(calculationThread);
calculationThread.Start(threadData);
}
else
{
// Wait for the threads to complete
foreach (Thread calculationThread in calculationThreads)
{
calculationThread.Join();
}
}
}
確定計算線程沒有全部終止? – 2013-02-19 08:49:47
您是否考慮過使用任務並行庫來處理線程,而不是像這樣明確地執行它?很多有用的方法讓你的生活變得更加簡單:http://msdn.microsoft.com/en-us/library/dd537609.aspx – Paddy 2013-02-19 08:50:48
我認爲你應該在加入後從CalculationThreads集合中刪除線程。 – fofik 2013-02-19 08:53:12