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