System.Diagnostics.Trace忽略文化设置

时间:2012-01-28 10:26:28

标签: .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));

产生以下输出:

Information: 0 : ¤500.00
Information: 0 : 500,00$

这意味着它要么在不同的线程上执行格式化,要么忽略Thread.CurrentThread.CurrentCulture(可能用不变的线程替换它)。为什么?? MSDN keeps silence

1 个答案:

答案 0 :(得分:1)

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

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

您已经提供了一种解决方法:针对您在呼叫站点所需的任何文化格式。