настройка многопоточных wpf-приложений - PullRequest
2 голосов
/ 12 ноября 2010

Я работаю над многопоточным wpf-приложением. Чтобы выполнить глобализацию, я попытался установить для культуры текущего потока (основного потока) значение invariant culturee в app.xaml.cs, чтобы все объекты C # в домене приложения работали с информацией об инварианте культуры. Но проблема возникает, когда многие потоки приходят на использование вызванных рабочих потоков, их культура по умолчанию настроена на настройки ОС, которые мне не нужны. Помогите мне найти способ, которым созданные рабочие потоки наследуют CultureInfo из основного потока

Ответы [ 2 ]

2 голосов
/ 12 ноября 2010

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

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 голосов
/ 20 мая 2017

Сделайте это:

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

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

...