小编典典

有没有办法为整个应用程序设置文化?所有当前线程和新线程?

all

有没有办法为整个应用程序设置文化? 所有当前线程和新线程?

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

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

但是,当然,当我们想在新线程中做某事时,这会“丢失”。有没有办法为整个应用程序设置CurrentCultureCurrentUICulture?所以新线程也得到了这种文化?还是每当创建一个我可以连接的新线程时都会触发一些事件?


阅读 199

收藏
2022-08-05

共1个答案

小编典典

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

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

这不会改变本机线程语言环境,并且以这种方式发布改变文化的代码可能不是一个好主意。不过,它可能对测试有用。

2022-08-05