Noté que System.Threading.Thread implementa un finalizador pero no IDisposable. La práctica recomendada es implementar siempre IDisposable cuando se implementa un finalizador. Jeffrey Richter wrote que la pauta es "muy importante y siempre se debe seguir sin excepción".¿Por qué no Thread implement IDisposable?
Entonces, ¿por qué no se rosca implementar IDisposable? Parece que implementar IDisposable sería un cambio sin interrupciones que permitiría la limpieza determinista de los recursos finalizables de Thread.
Y una pregunta relacionada: dado que el hilo es finalizable, ¿tengo que mantener referencias a ejecutar Threads para evitar que se finalicen durante la ejecución?
Dado que ManagedThreadID es un número entero, y puede leerse incluso antes de iniciar un hilo, eso sugeriría que algo se asigna cuando se crea un hilo (incluso si solo el número mismo). Si bien sería extraño que una aplicación creara más de 2 mil millones de objetos Threads, parecería que los identificadores serían un recurso que podría ser digno de ser lanzado. – supercat
@supercat: punto interesante. 'ManagedThreadId' parece ser asignado de forma secuencial. No sé qué sucedería después de haber creado más de 2 mil millones de ellos. –
Parece que los identificadores se vuelven a utilizar cuando los objetos Thread son elegibles para la finalización, por lo que sospecho que Threading.Thread está implementando Finalize pero no IDIsposable. – supercat