2010-10-11 1 views
3

В моей службе Windows Spring.NET создает некоторые задачи обработки потоков. Можно ли убедиться, что все эти потоки запущены с определенной культурой? Или мне нужно установить культуру в каждом потоке?Можете ли вы убедиться, что все темы запущены с определенной культурой?

В ASP.NET вы можете установить культуру (тег глобализации в web.config) на уровне приложения ... это можно сделать в Windows Forms/Windows Service?

ответ

5

К сожалению, нет никакого способа, чтобы установить культуру глобально для всех будущих потоков. По умолчанию они всегда будут иметь текущую культуру системы. Таким образом, вы должны явно установить культуру через CurrentCulture собственности (обратите внимание, что вы можете установить его, прежде чем вы на самом деле начать нить)


EDIT: .NET 4.5 обеспечит новый CultureInfo.DefaultThreadCurrentCulture свойство, которое позволяет установить культура по умолчанию для всех новых потоков в текущем домене приложения (CultureInfo.DefaultThreadCurrentUICulture также доступна)

+0

Это, конечно, также относится к тем, которые вы явно не создаете (рабочие потоки для других компонентов, финализатор и пул потоков). – Richard

+1

Очень раздражает то, что вы не можете установить культуру глобально для будущих потоков. –

0

Да, вы можете использовать Thread.CurrentCulture

или Application.CurrentCulture

+2

'Thread.CurrentCulture' будет работать только для определенного потока. «Application.CurrentCulture» - это (1) только WinForms и (2) просто ярлык для «Thread.CurrentThread.CurrentCulture»: из [docs] (http://msdn.microsoft.com/en-us/library/ system.windows.forms.application.currentculture.aspx): «CultureInfo, представляющий информацию о культуре для текущего потока». – Richard

Смежные вопросы