有没有办法为整个应用程序设置文化? 所有当前线程和新线程?
我们将文化的名称存储在数据库中,当我们的应用程序启动时,我们执行
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
这不会改变本机线程语言环境,并且以这种方式发布改变文化的代码可能不是一个好主意。不过,它可能对测试有用。