2010-11-11 55 views
2

Je travaille sur une application wpf multithread. Pour effectuer la globalisation j'ai essayé de placer la culture courante de fil (le fil principal) à la culture invariante dans app.xaml.cs, de sorte que tous les objets de C# dans le domaine d'application fonctionnent sur l'information invariante de culture. Mais le problème survient lorsque de nombreux threads sont utilisés par les threads de travail, la culture de ces threads est définie par défaut sur les paramètres de la culture OS, ce que je ne veux pas. Aidez-moi à trouver une façon dont les threads de travail créés héritent de l'élément CultureInfo du thread principalthread de paramétrage d'application wpf multi-thread cultureinfo

Répondre

2

Je ne pense pas qu'il existe un moyen d'attribuer la culture à l'AppDomain entier. Votre meilleure option pourrait être d'utiliser une classe d'assistance pour instancier les 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; 
    } 
} 
0

Faites ceci:

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

Comme vous pouvez le voir cette règle votre culture par défaut pour les deux fils de fond et de l'interface utilisateur. Si vous déposez ceci dans votre app.xaml alors vous devriez être tous ensemble.