Ho un'applicazione scritta in C# che non ha GUI o UI, ma scrive invece file analizzati da un'altra applicazione (in XML e altri).È possibile impostare CultureInfo per un'applicazione .NET o solo un thread?
Ho un cliente il cui CultureInfo ha il NumberDecimalSeparator impostato su una virgola, il che causa errori di parsing con numeri in virgola mobile (PI finirebbe come 3,1415).
Mi piacerebbe un modo per impostare CultureInfo a livello globale all'interno dell'applicazione, per tutti i thread. Ho provato:
- L'(apparentemente) l'approccio consueto della creazione CurrentThread.CurrentCulture come prima linea nel Main() ma sembra farsi resettare.
- Una variazione/espansione su http://www.codeproject.com/KB/cs/Change_App_Culture.aspx
- Eseguire lo stesso (# 1) sui thread creati in modo esplicito nell'applicazione.
E la modifica per utilizzare la formattazione esplicita non è un'opzione (linee 150K +, la maggior parte scritte da ex dipendenti).
[Modifica] L'applicazione si collega a un socket e gestisce le richieste da client dedicati. A seconda del tipo di richiesta, genera diverse classi di gestori.
Siamo spiacenti, quando ho postato avrei chiarito a # 1, che (io però) che avevo fatto questo in tutti i gestori che sono stati esplicitamente hanno generati, anche.
Si scopre che ho perso il thread/gestore che stava causando il problema. Ora l'applicazione funziona correttamente, ma la domanda rimane se la cultura può essere impostata su tutti i thread.
Se potesse scorrere su tutti i thread, risolverebbe anche il problema. Quindi:
Come posso ottenere tutte le discussione oggetti (non ProcessThread) nel processo in corso?
aiuta solo se si è in controllo della creazione thread. A volte devi gestire i thread creati da .NET. Non si dovrebbe mai dimenticare la linea santa ** 'System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo (" EN-US ");' ** – Bitterblue