如果我设置线程池线程的CurrentCulture
,当线程完成执行并返回线程池时会发生什么?它是否将CurrentCulture
重置为默认值(无论这可能意味着什么),还是会保留我在其上设置的文化?
我希望框架将线程重置为默认状态以防止这种情况,但无法找到任何此类文档。我找到的最接近的是来自ThreadPool的MSDN文档:
当线程池重用一个线程时, 它不会清除线程中的数据 本地存储或在的字段 用ThreadStaticAttribute标记 属性。因此,数据就是 一个放在线程本地存储中 方法可以暴露给任何其他方法 由它执行的方法 线程池线程。
这似乎表明线程在返回时不重置。
我已经尝试了一些示例代码来尝试对此进行测试, 似乎重置了文化,但我不相信我正在测试这种行为,因为我认为我只是使用ThreadPool的一小部分线程,因此无法确定我是否正在测试已经拥有它的文化集的线程。
答案 0 :(得分:8)
我不会依赖ThreadPool 永远重置信息,特别是因为您引用的文字。
如果您担心“更改”线程池的文化,我会确保在您的线程任务完成时重置它。这是一项非常简单的任务。
我不相信当前的线程池会这样做,但即使做了,也不能安全地假设.NET 4 +的ThreadPool实现不会改变。