2013-08-29 34 views
2

enter image description hereThread.CurrentCulture不保存到实例变量?

正如你所看到的,我试图将线程的CurrentCulture捕获到一个实例变量,以便通过类来重用它,但它不是持久的。在上面的照片中,我表明,即使分配后,值仍然不同。为什么是这样?

+1

你是什么意思的“没有坚持”? *存储的*值是否改变? – user2246674

+0

我的意思是它不是在构造函数调用和Action调用之间持续存在。 – Sinaesthetic

回答

5

有几个可能的原因,这可能发生

  • PickLanguage方法在不同的线程具有不同的文化
  • 线程的文化改变执行。

其中任何一种都会导致缓存文化与当前文化不同。一般来说,名为Current的缓存值是危险的,因为它表明它们可以并且将会改变

+0

你有任何建议让这个线程安全吗?我假设这是控制器类固有的。例如,如果要将它移入单独的命令类中,是否不能确保它在同一个线程上运行? – Sinaesthetic

+0

@Sinaesthetic这不是一个真正的线程安全问题,它更像是一个缓存策略问题。我的建议是简单地不缓存值。或者只在方法开始时与本地缓存对比 – JaredPar

+0

@Sinaesthetic我不确定线程​​问题到底在哪里 - 你的代码没有显示任何...作为预防措施 - 不要在动作中手动创建线程和你的生活应该好得多...考虑使用异步支持 - 当前的上下文将被带到你的新线程... –