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 можно использовать повторно. Итак, поскольку в более поздних частях кода каждый поток должен знать себя с уникальным номером, есть ли способ добавить что-то вроде имени в поток, чтобы каждый поток мог получить свой уникальный номер?

Спасибо за любой совет!

5
задан Mahdi Ghiasi 21 December 2011 в 21:45
поделиться