Le ThreadStatic attribute déclare une variable statique comme unique par thread. Connaissez-vous un modèle facile pour disposer correctement de telles variables?Élimination déterministe des objets ThreadStatic
Ce que nous avons utilisé avant ThreadStatic est un ThreadContextManager. Chaque thread était doté d'un ThreadContext qui conservait toutes les informations spécifiques au thread. Nous avons engendré des threads et les laisser travailler. Puis, quand ils ont tous fini, nous avons éliminé ThreadContentManager, qui à son tour disposait tous les contextes s'ils étaient IDisposable.
Je ne vois pas de moyen immédiat de traduire ce modèle en objets ThreadStatic. Les objets seront éliminés eventuellement, parce que les threads meurent, et donc rien ne les référence. Cependant, nous préférons disposer déterministe autant que possible.
Mise à jour
Je ne contrôle pas vraiment les fils directement - j'utilise Microsoft CCR, qui a une ThreadPool qui fait des tâches. Quand toutes les tâches sont terminées, je dispose du Dispatcher (qui contient le pool de threads). La chose est - je n'ai aucune chance de faire quoi que ce soit "à la fin de la fonction principale d'un thread" - donc je ne peux pas disposer les choses manuellement à la fin de la course d'un thread. Puis-je accéder aux objets statiques du thread depuis l'extérieur du thread?
Je ne veux pas nettoyer après chaque tâche. Tout thread donné dans mon pool de threads effectue de nombreuses tâches de manière séquentielle. La raison de son contexte est d'économiser l'allocation coûteuse de structures de données par tâche. Cela signifie que je ne peux nettoyer qu'après que tous les threads sont terminés. – ripper234