Mi programa crea algunos subprocesos para algunas tareas.¿ManagedThreadID no es único?
Mi código es así:
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);
}
Pero a veces, si SubNNs.Count()
se hace grande (10-20), el programa emite esta excepción: "Un elemento con que ya se ha añadido la misma clave." en la línea threadStates.Add(tt.ManagedThreadId, 0);
¿Por qué aparece este error? ¿No es ManagedThreadId
único? En caso afirmativo, ¿qué debo hacer?
y Si no, tal vez un hilo termina y otro hilo comienza con el mismo ManagedThreadId
? ¿Es posible? cómo prevenir este problema?
¿O hay otro problema?
EDITAR: Los usuarios dijeron que ManagedThreadId puede reutilizarse. Entonces, dado que en las partes posteriores del código, cada hilo necesita conocerse a sí mismo con un número único, ¿hay alguna forma de agregar algo como un nombre para enhebrar que cada hilo pueda obtener su número único?
¡Gracias por cualquier consejo!
Sí, los ID de hilo se reciclan. –