1
System.Diagnostics名称空间(.NET 4)中的每个TraceListener都具有IsThreadSafe属性。 .NET跟踪基础架构决定使用锁来根据此属性将多个调用同步到TraceListener的Trace方法。DefaultTraceListener和线程安全
BCL团队需要将DefaultTraceListener标记为不是ThreadSafe?它出现(从反射器),其为监听器核心逻辑是这样的:
private void internalWrite(string message)
{
if (Debugger.IsLogging())
{
Debugger.Log(0, null, message);
}
else if (message == null)
{
SafeNativeMethods.OutputDebugString(string.Empty);
}
else
{
SafeNativeMethods.OutputDebugString(message);
}
}
是否需要同步访问Debugger.Log
方法或OutputDebugString
字符串?
参考文献: