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.

È stato utile?

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à.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top