Pergunta

Se eu definir o CurrentCulture De um thread de threads, o que acontece quando o thread termina a execução e é devolvido ao pool de threads? Isso consegue CurrentCulture Redefinir de volta ao padrão (o que quer que isso signifique), ou ele manterá a cultura que eu definei nela?

Espero que a estrutura redefina o thread para um estado padrão para se proteger, mas não consiga encontrar nenhuma documentação para esse efeito. O mais próximo que encontrei é dos documentos do MSDN para Grupo de discussão:

Quando o pool de threads reutiliza um encadeamento, ele não limpa os dados no armazenamento local do encadeamento ou nos campos marcados com o atributo ThreadStaticTtribute. Portanto, os dados que são colocados no armazenamento local de thread em um método podem ser expostos a qualquer outro método executado pelo mesmo thread de thread pool.

Isso parece indicar que o tópico é não redefinir quando for devolvido.

Eu tentei algum código de exemplo para tentar testar isso, e ele faz Parece que a cultura é redefinida, mas não estou convencido de que estou testando esse comportamento corretamente, pois acho conjunto de cultura.

Foi útil?

Solução

Eu não confiaria no Threadpool sempre Redefinir informações, especificamente por causa do texto que você citou.

Se você está preocupado em "mudar" a cultura do pool de threads, eu a redefiniria quando sua tarefa encadeada estiver concluída. Esta é uma tarefa bastante simples.

Eu não acredito que o Threadpool atual faça isso, mas mesmo que fez, não seria seguro assumir que a implementação do .NET 4+Threadpool não mudará.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top