我发现的大多数示例都使用了Trace.WriteLineIf,例如
`Trace.WriteLineIf(mySwitch.TraceError,"my error");'
但使用Trace.TraceError("my error");
似乎会产生相同的结果(当发送到TextWriterTraceListener时)。
这两种方法有什么区别?
提前感谢。
答案 0 :(得分:3)
只有当Trace.WriteLineIf(mySwitch.TraceError,"my error");
为真时,您的代码mySwitch.TraceError
才会生成输出,无论Trace.TraceError("my error")
mySwitch.TraceError
都会产生输出
Trace.TraceError
为每个跟踪侦听器调用TraceEvent方法,跟踪事件类型为Error并向跟踪侦听器发送消息。
Trace.WriteLine
和Trace.WriteLineIf
只是向跟踪侦听器发送消息。
考虑使用TraceSource。 TraceSource是升级的跟踪系统。
[编辑@Robert Snyder]
Trace仍然存在,没有标记为过时,所以我没有争论不使用它。 但是,在大型真实世界解决方案中,我更喜欢TraceSource:
http://msdn.microsoft.com/en-us/magazine/cc163767.aspx
请查看John Robbins的文章了解更多详情:
答案 1 :(得分:0)
我认为这里的主要区别是如果满足任何布尔条件,Trace.writeLineIf将是正确的。
e.g。 Trace.writeLineIf(condition = True,“Condition met”)
我认为您上面描述的模式可能是对Trace.WriteLineIf的“滥用”,但我愿意以其他方式告知
请参阅Here