System.Diagnostics名前空間(.NET 4)の各TraceListenerには、IsThreadSafeプロパティがあります。 .NET Tracingインフラストラクチャは、ロックを使用して、このプロパティに基づいてTraceListenerのTraceメソッドへの複数の呼び出しを同期させることを決定します。DefaultTraceListenerおよびスレッドセーフ
DefaultTraceListenerをBCLチームが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
文字列へのアクセスを同期させる必要がありますか?
参考文献:OutputDebugString
への書き込みに加えて