Установите CultureInfo для новых потоков из службы .NET Windows.

Мне нужно установить CultureInfo для службы Windows, написанной на C# 4.0. Проблема в локали ОС - она ​​отличается от культуры моего сервиса.

Поскольку я использую .NET 4.0.NET 4.5 я могу изменить культуру по умолчанию для всех новых потоков), мой вопрос:

Как я могу обрабатывать создание всех новых потоков в моей службе Windows и устанавливать для них CultureInfo?


person lewis    schedule 06.05.2013    source источник
comment
stackoverflow.com/questions/4894405/localize-windows-service может помочь   -  person noobob    schedule 06.05.2013
comment
@noobob, по твоей ссылке топикстартер спрашивает, как добавить ресурсы глобализации в мое приложение. У меня уже есть ресурсы в моем приложении, но я не могу установить CultureInfo. Это приводит к неправильному выбору ресурсов.   -  person lewis    schedule 06.05.2013
comment
@noobob, я забыл добавить ресурсы локализации в свой msi, сгенерированный WiX. Спасибо за помощь!   -  person lewis    schedule 09.05.2013


Ответы (1)


Служба Windows не означает многопоточную программу. Таким образом, вы должны создать поток в своем коде, иначе ваша служба будет службой WCF. Если вы создаете поток самостоятельно, просто установите культуру нового потока после создания. Если это служба WCF, см. http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.idispatchmessagespector.aspx. Вам нужно реализовать интерфейс IDispatchMessageInspector, и если будет новый запрос от клиента (может быть создан новый поток), будет вызван метод AfterReceiveRequest, вы можете установить CultureInfo в этом методе. Если ваша служба Windows не является службой WCF, предоставьте дополнительную информацию о ней.

person Ailis    schedule 06.05.2013
comment
Служба Windows имеет более 1 потока. Даже если я установил Thread.CurrentThread.CurrentUICulture в методе Main службы, мой код бизнес-логики выполняется в другом потоке с другим CultureInfo. - person lewis; 06.05.2013