我有一个自定义的TraceListener和两个线程。跟踪消息仅来自第一线程,而第二个线程的Trace.Write()消息不会通过。我尝试使用两个线程都可以访问的单个全局TraceListener,但第二个线程仍然不产生任何输出。
我如何实现这一点,以便两个线程都写入到相同的跟踪输出?如果跟踪侦听器适当地利用锁定,是否可以这样做?
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
}
}发布于 2011-01-20 03:58:31
在thread.Start();之后或在Run();内调用Trace.Flush();,您将看到输出。
发布于 2011-06-06 13:03:40
此外,添加Trace.AutoFlush = true的效果也很好。
https://stackoverflow.com/questions/4739753
复制相似问题