我的程序爲某些任務創建了一些線程。ManagedThreadID不是唯一的嗎?
我的代碼是這樣的:
Dictionary<int, double> threadStates = new Dictionary<int, double>();
for (int i = 0; i < SubNNs.Count(); i++)
{
Thread tt = new Thread(StartTrainingSubs);
threadStates.Add(tt.ManagedThreadId, 0);
tt.Priority = ThreadPriority.Highest;
tt.Start(i);
}
但有時候,如果SubNNs.Count()
變大(10-20),該計劃拋出此異常:「用相同的密鑰已經被添加的項目。」在線threadStates.Add(tt.ManagedThreadId, 0);
爲什麼我給這個錯誤?是不是ManagedThreadId
獨一無二? 如果是,我該怎麼辦?
如果不是,也許一個線程完成,另一個線程開始相同ManagedThreadId
?可能嗎?如何防止這個問題?
還是有另一個問題?
編輯:用戶說,ManagedThreadId可以重複使用。因此,由於在後面的代碼部分中,每個線程都需要使用唯一的編號來了解自己,有沒有什麼方法可以像線程一樣添加名稱,以便每個線程都可以獲得唯一的編號?
感謝您的任何建議!
是的,線程ID被回收。 –