我有一个自定义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
}
}
答案 0 :(得分:3)
同时添加Trace.AutoFlush = true
也很有效。
答案 1 :(得分:1)
在Trace.Flush();
之后或thread.Start();
之内致电Run();
,您将看到输出。