У меня есть приложение, написанное на С#, которое не имеет графического интерфейса или пользовательского интерфейса, но вместо этого записывает файлы, которые анализируются другим приложением (в XML и других).
У меня есть клиент, у которого CultureInfo имеет NumberDecimalSeparator, установленный в запятую, что приводит к ошибкам синтаксического анализа с номерами с плавающей запятой (PI будет заканчиваться как 3,1415).
Мне нужен способ установить CultureInfo глобально в приложении для всех потоков. Я пробовал:
- Обычный (обычно) подход CurrentThread.CurrentCulture как первая строка в Main(), но, похоже, он получает reset.
- Вариант/расширение на http://www.codeproject.com/KB/cs/Change_App_Culture.aspx
- Сделайте то же самое (# 1) в явно созданных потоках в приложении.
И изменение использования явного форматирования не является вариантом (150K + строк, большинство из которых написаны бывшими сотрудниками).
[изменить] Приложение привязывается к сокету и обрабатывает запросы от выделенных клиентов. В зависимости от типа запроса он порождает разные классы обработчиков.
Извините, когда я впервые разместил сообщение, я должен был уточнить в № 1, что (хотя) я сделал это во всех обработчиках, которые также были явно порождены.
Оказывается, я пропустил поток/обработчик, который вызывал проблему. Таким образом, приложение работает правильно, но остается вопрос, можно ли установить культуру для всех потоков.
Если бы он мог перебирать все потоки, это тоже решило бы проблему. Итак:
Как я могу получить все объекты Thread (не ProcessThread) в текущем процессе?