Многопоточная настройка wpf-приложения threadinfo cultureinfo
Я работаю над многопоточным приложением wpf. Чтобы выполнить глобализацию, я попытался установить для культуры текущего потока (основного потока) значение invariant culturee в app.xaml.cs, чтобы все объекты C# в домене приложения работали с информацией об инварианте культуры. Но проблема возникает, когда многие потоки приходят на использование вызванных рабочих потоков, их культура по умолчанию настроена на настройки ОС, которые мне не нужны. Помогите мне найти способ, которым созданные рабочие потоки наследуют CultureInfo из основного потока.
2 ответа
Я не думаю, что есть способ присвоить культуру всему домену приложений. Лучшим вариантом может быть использование вспомогательного класса для создания экземпляров потоков.
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;
}
}
Сделай это:
if (Thread.CurrentThread.CurrentCulture.Name != "en-US")
{
var culture = CultureInfo.CreateSpecificCulture("en-US");
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
}
Как вы можете видеть, это устанавливает вашу культуру по умолчанию для фоновых потоков и потоков пользовательского интерфейса. Если вы уроните это в свой app.xaml, тогда у вас все будет готово.