У меня есть приложение, написанное на C#, которое не имеет графического интерфейса или пользовательского интерфейса, но вместо этого записывает файлы, которые анализируются другим приложением (в XML и других).Можно ли установить CultureInfo для приложения .NET или просто поток?
У меня есть клиент, у которого CultureInfo имеет NumberDecimalSeparator, установленный в запятую, что приводит к ошибкам синтаксического анализа с номерами с плавающей запятой (PI в конечном итоге будет 3,1415).
Мне нужен способ установить CultureInfo в глобальном масштабе в приложении для всех потоков. Я пробовал:
- The (видимо) обычный подход установление CurrentThread.CurrentCulture в качестве первой линии в Main() но это, кажется, чтобы сбросить.
- Вариант/расширение на http://www.codeproject.com/KB/cs/Change_App_Culture.aspx
- Сделайте то же самое (# 1) на явно созданные потоки в приложении.
И изменение использования явного форматирования не является вариантом (150K + строки, большинство из которых написаны бывшими сотрудниками).
[Редактировать] Приложение связывается с сокетом и обрабатывает запросы от выделенных клиентов. В зависимости от типа запроса он порождает разные классы обработчиков.
Извините, когда я впервые разместил сообщение, я должен был уточнить в # 1, что (Я, хотя) Я сделал это во всех обработчиках, которые были явно порождены.
Оказалось, что я пропустил нить/обработчик, который вызывал проблему. Итак, приложение работает правильно, но остается вопрос, можно ли установить культуру для всех потоков.
Если бы он мог перебирать все потоки, это тоже решило бы проблему. Итак:
Как я могу получить все темы объекты (не ProcessThread) в текущем процессе?
Помогает только если вы контролируете создания потока. Иногда вам приходится иметь дело с потоками, созданными .NET. Никогда не следует забывать о святой линии ** «System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo (« EN-US »); ** – Bitterblue