El ThreadStatic attribute declara una variable estática como única por subproceso. ¿Conoces un patrón fácil para eliminar correctamente esas variables?Eliminación determinista de objetos ThreadStatic
Lo que utilizamos antes de ThreadStatic es un ThreadContextManager. A cada subproceso se le asignó un ThreadContext que conservaba toda la información específica de subprocesos. Engendramos algunos hilos y los dejamos trabajar. Luego, cuando todos terminaron, eliminamos ThreadContentManager, que a su vez eliminó todos los contextos si eran IDisposables.
No veo una manera inmediata de traducir este patrón a objetos ThreadStatic. Los objetos se descartarán de forma eventual, porque los hilos se mueren, por lo que nada los referencia. Sin embargo, preferimos disponer de determinista siempre que sea posible.
actualización
Realmente no controlo los hilos directamente - Estoy usando Microsoft CCR, que tiene una ThreadPool que hace tareas. Cuando finalicen todas las tareas, eliminaré Dispatcher (que contiene el grupo de subprocesos). La cuestión es que no tengo la oportunidad de hacer nada "al final de la función principal de un hilo", así que no puedo deshacerme de las cosas manualmente al final de la ejecución de un hilo. ¿Puedo acceder a los objetos estáticos del hilo desde fuera del hilo de alguna manera?
No quiero limpiar después de cada tarea. Cualquier hilo dado en mi grupo de trabajo hace muchas tareas secuencialmente. La razón por la que tiene contexto es para ahorrar costosas asignaciones de estructuras de datos por tarea. Esto significa que solo puedo limpiar después de que todos los hilos hayan terminado. – ripper234