2014-07-08 30 views
0

我有一些问题过滤器跟踪事件。这里是我的代码:WPF跟踪事件问题

PresentationTraceSources.Refresh(); 
Stream myFile = File.Create("trace.txt"); 
listener = new TextWriterTraceListener(myFile); 
PresentationTraceSources.RoutedEventSource.Listeners.Add(listener); 
PresentationTraceSources.RoutedEventSource.Switch.Level = SourceLevels.Warning; 
PresentationTraceSources.RoutedEventSource.TraceEvent(TraceEventType.Warning, 0, "Test my warning"); 

然后我跑我的应用程序,并期望该文件trace.txt将包含“测试我的警告”的字符串,但这个文件是空的。但是,如果我在代码改变一个字符串

PresentationTraceSources.RoutedEventSource.Switch.Level = SourceLevels.All; 

我可以看到字符串“测试我的警告,”在一个名为“trace.txt”文件。但是这总是跟踪所有事件类型,而不仅仅是警告。但我只想跟踪警告。你能帮我解决这个问题吗?

回答

1

只需添加:

PresentationTraceSources.RoutedEventSource.Flush(); 

在最后,它会工作,对任何来源的水平。

其实只要你有另一个级别比SourceLevels.All,你必须刷新你的TraceSource写你的听众。