La modification de la culture d’un thread threadpool l’a-t-elle affectée lorsqu’il est renvoyé dans le pool?

Si je définis le CurrentCulture d’un thread de pool de threads, que se passe-t-il lorsque le thread termine son exécution et est renvoyé dans le pool de threads? Réinitialise-t-il sa valeur par défaut CurrentCulture (quoi que cela puisse vouloir dire) ou conservera-t-il la culture que je lui ai définie?

J’espère que le framework réinitialise le thread à un état par défaut pour se prémunir contre cela, mais ne trouve aucune documentation à cet effet. Le plus proche que j’ai trouvé provient de la documentation MSDN pour ThreadPool :

Lorsque le pool de threads réutilise un thread, il n’efface pas les données du stockage local du thread ou des champs marqués de l’atsortingbut ThreadStaticAtsortingbute. Par conséquent, les données placées dans le stockage local de threads par une méthode peuvent être exposées à toute autre méthode exécutée par le même thread de pool de threads.

Cela semble indiquer que le thread n’est pas réinitialisé lorsqu’il est renvoyé.

J’ai essayé quelques exemples de code pour essayer de tester cela, et il semble bien que la culture soit réinitialisée, mais je ne suis pas convaincu que je teste correctement ce comportement, car je n’utilise qu’un petit sous-ensemble des threads de ThreadPool. donc je ne peux pas être sûr de tester un fil qui a déjà eu sa culture définie.

Je ne compterais pas sur le ThreadPool pour réinitialiser des informations, en particulier à cause du texte que vous avez cité.

Si vous êtes inquiet au sujet de la “modification” de la culture du pool de threads, assurez-vous de le réinitialiser une fois votre tâche threadée terminée. C’est une tâche assez simple.

Je ne crois pas que le pool de threads actuel fasse cela, mais même s’il le faisait , il ne serait pas prudent de supposer que l’implémentation de ThreadPool de .NET 4 + ne changera pas.