代码之家  ›  专栏  ›  技术社区  ›  adrianbanks

更改线程池线程的区域性会在线程返回池时影响它吗?

  •  7
  • adrianbanks  · 技术社区  · 16 年前

    如果我设置 CurrentCulture 对于线程池线程,当线程完成执行并返回到线程池时会发生什么?它得到它的 当代文化 重置回默认值(无论这意味着什么),还是它将保留我对其设置的区域性?

    我希望框架将线程重置为默认状态,以防止出现这种情况,但找不到任何与此相关的文档。我找到的最接近的是 ThreadPool :

    当线程池重用线程时, 它不清除线程中的数据 本地存储或在 用threadStaticAttribute标记 属性。因此,数据 一个放在线程本地存储中 方法可以暴露于任何其他 由相同的 线程池线程。

    这似乎表明线程 返回时重置。

    我尝试了一些示例代码来测试这个,它 文化似乎被重置了,但我不相信我正在正确地测试这种行为,因为我认为我只使用了线程池线程的一小部分,因此无法确定我正在测试的线程已经具有了它的文化集。

    1 回复  |  直到 16 年前
        1
  •  8
  •   Reed Copsey    16 年前

    我不想依靠螺纹工具 曾经 重置信息,特别是因为您引用的文本。

    如果您担心“更改”线程池的区域性,我将确保在线程任务完成时重置它。这是一项非常简单的任务。

    我不相信当前的线程池会这样做,但即使它 ,假设.NET 4+的threadpool实现不会更改是不安全的。