Справка по локализации рабочего процесса .Net Background - PullRequest
0 голосов
/ 09 октября 2008

Я испытываю странное поведение с локализованными сообщениями, сообщаемыми из моего фонового рабочего процесса в моем приложении Windows Form.

Приложение является установочным приложением с окнами форм. Приложение запускает фоновый рабочий и выполняет сброс IIS, а затем устанавливает MSI.

При первом запуске приложения на испанской виртуальной машине Win Server 2003 формы отображаются на испанском, но не в сообщениях BWP. Если я немедленно запустил его снова, сообщения на испанском языке.

Файлы .Resources являются встроенными ресурсами и извлекаются во временный каталог при запуске приложения.

Мой код извлекает локализованные строки через пользовательский класс менеджера ресурсов. Этот класс создает файловый ресурс для файлов .Resources во временном каталоге. Это работает правильно, потому что метки и заголовки окон локализуются каждый раз.

Кто-нибудь испытывал это? Я абсолютно застрял, пожалуйста, помогите. Спасибо, Андрей

Ответы [ 2 ]

4 голосов
/ 17 января 2012

Если ваш UIThread запускает другой UICulture, чем ваш BackgroundWorker, вы можете явно изменить культуру рабочего потока с помощью обратного вызова, подобного этому:

        private delegate CultureInfo GetUICultureCallback();

        private CultureInfo GetUICulture()
        {
            if (this.InvokeRequired)
            {
                return (CultureInfo)this.Invoke(new GetUICultureCallback(GetUICulture));
            }

            return System.Threading.Thread.CurrentThread.CurrentUICulture;
        }

        void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            System.Threading.Thread.CurrentThread.CurrentUICulture = GetUICulture();

            for (; ; )
            {
                if (backgroundWorker.CancellationPending)
                {
                    e.Cancel = true;
                    return;
                }
.
.
.
1 голос
/ 10 октября 2008

Информация о культуре находится в локальном хранилище потоков, поэтому, если фоновый работник запускает процессы в разных потоках, этого можно ожидать.

http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.currentculture.aspx

http://msdn.microsoft.com/en-us/library/system.threading.thread.currentculture.aspx

Я не уверен, что рекомендуется для передачи информации о культуре между потоками.

...