Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencySymbol = "$";
decimal value = 500;
Trace.TraceInformation("{0:C}", value);
Trace.TraceInformation(string.Format("{0:C}", value));
produces the following output:
Information: 0 : ¤500.00
Information: 0 : 500,00$
That means it either performs formatting on a different thread or ignores Thread.CurrentThread.CurrentCulture (probably replacing it with invariant one). WHY?? MSDN keeps silence.
Correct,
Traceoutput explicitly usesCultureInfo.InvariantCulture. Decompiled source forTraceListener.TraceEventhas it this way:You already provided a workaround: format for any culture you want at the call site.