Non cambiare la cultura di un filo di thread incidono su di esso quando viene restituito al pool?
-
13-09-2019 - |
Domanda
Se ho impostato la CurrentCulture
di un thread pool di thread, che cosa accade quando il thread termina l'esecuzione e viene restituito di nuovo al pool di thread? Ha ottenuto il suo CurrentCulture
ripristinato al valore predefinito (qualunque cosa ciò possa significare), o sarà mantenere la cultura ho impostato su di esso?
Spero che il quadro reimposta il filo ad uno stato predefinito in guardia contro questo, ma non riesco a trovare alcuna documentazione in tal senso. Il più vicino che ho trovato è dalla documentazione MSDN per ThreadPool :
Quando il pool di thread riutilizza un filo, non cancella i dati a filo memoria locale o in campi che sono contrassegnato con il ThreadStaticAttribute attributo. Pertanto, i dati che sono immessi nella memoria locale del filo da una metodo può essere esposto a qualsiasi altra metodo che viene eseguita dallo stesso pool di thread thread.
Questo sembra indicare che il thread è non resettato quando viene restituito.
Ho provato alcuni esempi di codice per cercare di testare questo, e ha sembra che la cultura viene ripristinato, ma io non sono convinto che sto testando questo comportamento correttamente come penso di essere solo utilizzando un piccolo sottoinsieme di fili del ThreadPool, e quindi non può essere sicuro che sto testando un filo che ha già avuto è insieme cultura.
Soluzione
Non vorrei fare affidamento sul ThreadPool mai reset delle informazioni, in particolare a causa del testo citato.
Se siete preoccupati per "cambiare" la cultura del pool di thread, vorrei fare in modo di annullarlo quando il vostro compito filettato è completa. Questo è un compito abbastanza semplice.
Non credo che il pool di thread corrente fa questo, ma anche se è ha , non sarebbe lecito ritenere che l'applicazione .NET 4 's + ThreadPool non cambierà.