2010-11-11 4 views
2

Я работаю над многопоточным приложением wpf. Чтобы выполнить глобализацию, я попытался настроить культуру текущего потока (основного потока) на инвариантную культуру в app.xaml.cs, чтобы все объекты C# в домене приложений работали с информацией об инварианте культуры. Но проблема возникает, когда многие потоки приходят к использованию вызванных рабочих потоков, культура этого потока по умолчанию не соответствует настройкам OS Culture, которые я не хочу. Помогите мне найти способ, с помощью которого создаются рабочие потоки, наследует CultureInfo из основного потокаmulti threaded wpf application setting thread cultureinfo

ответ

2

Я не думаю, что есть способ присвоить культуру всему AppDomain. Ваш лучший вариант может заключаться в использовании вспомогательного класса для создания экземпляров потоков.

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; 
    } 
} 
0

ли это:

if (Thread.CurrentThread.CurrentCulture.Name != "en-US") 
{ 
    var culture = CultureInfo.CreateSpecificCulture("en-US"); 
    CultureInfo.DefaultThreadCurrentCulture = culture; 
    CultureInfo.DefaultThreadCurrentUICulture = culture; 
} 

Как вы можете видеть это устанавливает свою культуру по умолчанию для обоих фоновых и UI потоков. Если вы поместите это в свой app.xaml, тогда вы должны быть настроены.