J'ai une application écrite en C# qui n'a pas d'interface graphique ou d'interface utilisateur, mais écrit à la place des fichiers qui sont analysés par une autre application (en XML et autres).Est-il possible de définir CultureInfo pour une application .NET ou simplement un thread?
J'ai un client dont CultureInfo a défini le paramètre NumberDecimalSeparator sur une virgule, ce qui provoque des erreurs d'analyse avec des nombres à virgule flottante (PI finirait par 3,1415).
Je voudrais un moyen de définir globalement le CultureInfo dans l'application, pour tous les threads. J'ai essayé:
- Le (apparemment) approche habituelle de la mise en CurrentThread.CurrentCulture comme la première ligne principal() mais il semble se réinitialiser.
- Une variation/expansion sur http://www.codeproject.com/KB/cs/Change_App_Culture.aspx
- Faites de même (# 1) sur les threads explicitement créés dans l'application.
Il n'est pas possible d'utiliser la mise en forme explicite (150K + lignes, la plupart écrites par d'anciens employés). [Modifier] L'application se lie à un socket et gère les requêtes des clients dédiés. Selon le type de requête, il engendre différentes classes de gestionnaire.
Désolé, lors de ma première publication j'aurais dû clarifier en # 1 que (je pensais à) Je l'avais fait dans tous les gestionnaires qui étaient explicitement engendrés, aussi.
Il se trouve que j'ai raté le fil/gestionnaire qui était à l'origine du problème. Donc l'application fonctionne correctement maintenant, mais la question reste à savoir si la culture peut être définie sur tous les threads.
S'il pouvait itérer sur tous les threads, cela résoudrait également le problème. Alors:
Comment puis-je obtenir tous les objets discussion (non ProcessThread) dans le processus en cours?
Contribue seulement si vous êtes dans le contrôle de la création de fil. Parfois, vous devez gérer les threads créés par .NET. Il ne faut jamais oublier la ligne sacrée ** 'System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo (" FR-US ");' ** – Bitterblue