有没有一种方法可以为整个应用程序设置文化? 所有当前线程和新线程?
我们将文化名称存储在数据库中,当我们的应用程序启动时,
CultureInfo ci = new CultureInfo(theCultureString); Thread.CurrentThread.CurrentCulture = ci; Thread.CurrentThread.CurrentUICulture = ci;
但是,当然,当我们想在新线程中执行某些操作时,这会“丢失”。是否有设置,的一种方式CurrentCulture,并CurrentUICulture为整个应用程序?这样,新线程也可以得到这种文化?还是在创建新线程时触发了某个事件?
CurrentCulture
CurrentUICulture
在.NET 4.5中,您可以使用该CultureInfo.DefaultThreadCurrentCulture属性来更改AppDomain的区域性。
CultureInfo.DefaultThreadCurrentCulture
对于4.5之前的版本,您必须使用反射来操纵AppDomain的区域性。CultureInfo(m_userDefaultCulture在.NET 2.0 mscorlib中,s_userDefaultCulture在.NET 4.0 mscorlib中)上有一个私有静态字段,该字段控制CurrentCulture如果线程未在其自身上设置该属性的结果。
CultureInfo
m_userDefaultCulture
s_userDefaultCulture
这不会更改本地线程的语言环境,并且以这种方式发布更改区域性的代码可能不是一个好主意。不过,它可能对测试很有用。