.net System.Diagnostics.Trace忽略区域性设置

.net System.Diagnostics.Trace忽略区域性设置,.net,.net-4.0,formatting,cultureinfo,.net,.net 4.0,Formatting,Cultureinfo,生成以下输出: Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol = "$"; decimal value = 500; Trace.TraceInformation("{0:C}", value); Trace.TraceInformation(string.Format("{0:C}", value)); 这意味着它要么在另一个线程上执行格式化,要么忽略thread.CurrentThread.CurrentCu

生成以下输出:

Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol = "$";
decimal value = 500;
Trace.TraceInformation("{0:C}", value);
Trace.TraceInformation(string.Format("{0:C}", value));

这意味着它要么在另一个线程上执行格式化,要么忽略
thread.CurrentThread.CurrentCulture
(可能将其替换为不变线程)。为什么

正确,
Trace
输出显式使用
CultureInfo.InvariantCulture
TraceListener.TraceEvent的反编译源代码是这样的:

Information: 0 : ¤500.00
Information: 0 : 500,00$
您已经提供了一个变通方法:在呼叫站点中为您想要的任何区域性设置格式

this.WriteLine(string.Format(CultureInfo.InvariantCulture, format, args));