在某些情况下,我需要将进程的语言环境设置为 en-US。
我知道如何为当前线程执行此操作:
System.Threading.Thread.CurrentThread.CurrentCulture =
System.Globalization.CultureInfo.CreateSpecificCulture("en-US");
但我的应用程序使用 BackgroundWorkers
进行一些处理,并且这些工作线程的语言环境似乎不受上述对其生成主线程的更改的影响。
那么我如何才能为我的应用程序中的所有线程设置语言环境,而无需在每个线程中手动设置呢?
最佳答案
如果您想这样做,您必须更改操作系统区域设置。您出于什么原因希望 BackgroundWorkers 在 en-US 中运行?
您应该让您的业务层在不变的文化中运行,并且只为最终用户的 UI 提供特定的文化。
如果您使用的是 BackgroundWorker组件,并且必须这样做你可以在 DoWork 方法中尝试这样的事情:
// In DoWork
System.Globalization.CultureInfo before = System.Threading.Thread.CurrentThread.CurrentCulture;
try
{
System.Threading.Thread.CurrentThread.CurrentCulture =
new System.Globalization.CultureInfo("en-US");
// Proceed with specific code
}
finally
{
System.Threading.Thread.CurrentThread.CurrentUICulture = before;
}
关于c# - 如何更改 .Net 中整个进程(而不仅仅是当前线程)的 CurrentCulture?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1460023/