2011-01-19 23 views
1

私はカスタムTraceListenerと2つのスレッドを持っています。トレースメッセージは最初のスレッドからのみ送信され、2番目のスレッドのTrace.Write()メッセージは送信されません。私は両方のスレッドがアクセス権を持っているが、2つ目のスレッドはまだ出力を生成しない、単一のグローバルTraceListenerを使用しようとしました。複数のスレッドからTraceListenerに書き込む

これを実装して、両方のスレッドが同じTrace出力に書き込むようにするにはどうすればよいですか?トレースリスナが適切にロックを利用している場合、それは可能ですか?

void Initialize() 
{ 
    Trace.Listeners.Add(App.CustomTraceListener); 
    Trace.Write("test?"); // this produces output 
    var start = new ThreadStart(Run); 
    var thread = new Thread(start); 
    thread.Start(); 
} 

void Run() 
{ 
    while(true) 
    { 
     Thread.Sleep(1000); 
     Trace.Write("hello from second thread"); // this does not produce anything 
    } 
} 

答えて

1

コールTrace.Flush();thread.Start();後またはRun();内側とあなたは出力が表示されます。

3

また、Trace.AutoFlush = trueを追加するとうまくいきます。

関連する問題