一尘不染

有没有一种方法可以为整个应用程序设置文化?所有当前线程和新线程?

c#

有没有一种方法可以为整个应用程序设置文化? 所有当前线程和新线程?

我们将文化名称存储在数据库中,当我们的应用程序启动时,

CultureInfo ci = new CultureInfo(theCultureString);
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;

但是,当然,当我们想在新线程中执行某些操作时,这会“丢失”。是否有设置,的一种方式CurrentCulture,并CurrentUICulture为整个应用程序?这样,新线程也可以得到这种文化?还是在创建新线程时触发了某个事件?


阅读 329

收藏
2020-05-19

共1个答案

一尘不染

在.NET
4.5中,您可以使用该CultureInfo.DefaultThreadCurrentCulture属性来更改AppDomain的区域性。

对于4.5之前的版本,您必须使用反射来操纵AppDomain的区域性。CultureInfom_userDefaultCulture在.NET
2.0 mscorlib中,s_userDefaultCulture在.NET 4.0
mscorlib中)上有一个私有静态字段,该字段控制CurrentCulture如果线程未在其自身上设置该属性的结果。

这不会更改本地线程的语言环境,并且以这种方式发布更改区域性的代码可能不是一个好主意。不过,它可能对测试很有用。

2020-05-19