Mam aplikacji napisane w języku C#, który nie ma GUI lub interfejsu użytkownika, ale zamiast tego zapisuje pliki, które są analizowane przez inną aplikację (w XML i innych).Czy jest możliwe ustawienie CultureInfo dla aplikacji .NET lub tylko wątku?
Mam klienta, którego CultureInfo ma NumberDecimalSeparator ustawiony na przecinek, co powoduje błędy parsowania z liczb zmiennoprzecinkowych (PI kończy się jako 3,1415).
Chciałbym uzyskać sposób, aby ustawić CultureInfo globalnie w aplikacji, dla wszystkich wątków. Próbowałem:
- The (podobno) zwyczajowe podejście ustawiania CurrentThread.CurrentCulture jako pierwsza linia w main() ale wydaje się, aby zresetować.
- Zmiana/rozszerzenie na http://www.codeproject.com/KB/cs/Change_App_Culture.aspx
- Wykonaj to samo (# 1) na jawnie utworzonych wątkach w aplikacji.
Zmiana na formatowanie jawne nie jest opcją (150K + linie, większość napisana przez byłych pracowników).
[Edytuj] Aplikacja łączy się z gniazdem i obsługuje żądania od dedykowanych klientów. W zależności od typu żądania tworzy różne klasy obsługi.
Przepraszam, kiedy po raz pierwszy opublikowałem, powinienem był wyjaśnić w # 1, że (I though) Zrobiłem to we wszystkich procedurach, które zostały jawnie odrodzone.
Okazuje się, że przegapiłem wątek/uchwyt, który był przyczyną problemu. Aplikacja działa teraz prawidłowo, ale pozostaje pytanie, czy można ustawić kulturę we wszystkich wątkach.
Gdyby można było powtórzyć wszystkie wątki, rozwiąże to również problem. Więc:
Jak mogę uzyskać wszystkie wątku przedmiotów (nie ProcessThread) w bieżącym procesie?
Pomaga tylko jeśli jesteś w kontroli tworzenia wątku. Czasami masz do czynienia z wątkami stworzonymi przez .NET. Nie należy nigdy zapominać o świętej linii ** 'System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo (" EN-US ");' ** – Bitterblue