我发现的大多数例子都使用Trace.WriteLineIf。
`Trace.WriteLineIf(mySwitch.TraceError,"my error");'但使用Trace.TraceError("my error");似乎会得到相同的结果(当发送到TextWriterTraceListener时)。
这两种方法有什么不同?
提前谢谢。
发布于 2011-02-25 21:55:55
仅当mySwitch.TraceError为true时,代码Trace.WriteLineIf(mySwitch.TraceError,"my error");才会生成输出,无论mySwitch.TraceError的值如何,Trace.TraceError("my error")都会生成输出
Trace.TraceError使用跟踪事件类型Error为每个跟踪侦听器调用TraceEvent方法,并向跟踪侦听器发送一条消息。
Trace.WriteLine和Trace.WriteLineIf只是向跟踪侦听器发送一条消息。
考虑使用TraceSource。TraceSource是升级后的跟踪系统。
编辑@Robert Snyder
跟踪仍然存在,没有标记为过时,所以我没有理由不使用它。然而,在现实世界的大型解决方案中,我会更喜欢TraceSource:
http://msdn.microsoft.com/en-us/magazine/cc163767.aspx
有关更多详细信息,请参阅John Robbins的文章:
发布于 2011-02-25 20:36:26
我认为这里的主要区别是,如果满足任何布尔条件,Trace.writeLineIf都是正确的。
例如Trace.writeLineIf(条件=真,“满足条件”)
我认为你上面描述的模式可能是对Trace.WriteLineIf的“滥用”,但我愿意告诉你不同的说法。
请参阅Here
https://stackoverflow.com/questions/5116913
复制相似问题