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