2014-07-08 34 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寫你的聽衆。