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
字符串?
參考文獻: