Il mio programma crea alcuni thread per alcune attività.ManagedThreadID non è univoco?
Il mio codice è simile a questo:
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);
}
Ma a volte, se SubNNs.Count()
diventa grande (10-20), il programma genera questa eccezione: "Un elemento con la stessa chiave è già stato aggiunto" alla riga threadStates.Add(tt.ManagedThreadId, 0);
Perché ho dato questo errore? ManagedThreadId
non è univoco? Se sì, cosa dovrei fare?
e Se no, forse un thread finisce e un altro thread inizia con lo stesso ManagedThreadId
? È possibile? come prevenire questo problema?
Oppure c'è un altro problema?
MODIFICA: gli utenti hanno affermato che è possibile riutilizzare ManagedThreadId. Quindi, poiché nelle parti successive del codice, ogni thread deve conoscere se stesso con un numero univoco, c'è un modo per aggiungere qualcosa come un nome al thread che ogni thread può ottenere il suo numero univoco?
Grazie per qualsiasi consiglio!
Sì, gli ID thread vengono riciclati. –