从多个线程写入TraceListener

时间:2011-01-19 19:33:15

标签: c# .net wpf debugging trace

我有一个自定义TraceListener和两个线程。跟踪消息只来自第一个线程,第二个线程的Trace.Write()消息不通过。我尝试使用两个线程都可以访问的单个全局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
    }
}

2 个答案:

答案 0 :(得分:3)

同时添加Trace.AutoFlush = true也很有效。

答案 1 :(得分:1)

Trace.Flush();之后或thread.Start();之内致电Run();,您将看到输出。