I'm working on a multithreaded wpf application. To perform globalization i tried to set the current thread's(main thread) culture to invariant culturee in app.xaml.cs, So that all C# objects in app domain works on culture invariant info. But the problem arises when many threads comes to usage the worker threads invoked, those thread's culture are defaulted to OS Culture settings which i don't want. Help me in finding out a way where the worker threads created inherits the CultureInfo from main thread
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
I don't think there is a way to assign the culture to the entire AppDomain. Your best option might be to use a helper class to instantiate the threads.
class ThreadHelper
{
public static Thread getThread(ThreadStart start, int maxStackSize)
{
Thread t = new Thread(start,maxStackSize);
t.CurrentCulture = new System.Globalization.CultureInfo(3081);
return t;
}
}
回答2:
Do this:
if (Thread.CurrentThread.CurrentCulture.Name != "en-US")
{
var culture = CultureInfo.CreateSpecificCulture("en-US");
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
}
As you can see it this sets your default culture for both background and UI threads. If you drop this in your app.xaml then you should be all set.