使用autoflush=';假';(C#,.net)
我正在编写一个自定义tracelistener,将跟踪消息写入文件,添加轮换(例如每天更改文件名)。使用autoflush=';假';(C#,.net),c#,.net,configuration,trace,C#,.net,Configuration,Trace,我正在编写一个自定义tracelistener,将跟踪消息写入文件,添加轮换(例如每天更改文件名)。 在重写Flush方法时,我在底层StreamWriter上调用Flush,但如果在应用程序配置中设置autoflush='false',则在应用程序终止时不会调用Flush 当应用程序退出时,完成自定义跟踪侦听器的正确方法是什么 EDIT:我重写了Dispose(bool disposing)方法,因为基本TraceListener类已经实现了一次性模式,但是,据我所知,该方法没有被调用。如果我
在重写
Flush
方法时,我在底层StreamWriter
上调用Flush
,但如果在应用程序配置中设置autoflush='false'
,则在应用程序终止时不会调用Flush
当应用程序退出时,完成自定义跟踪侦听器的正确方法是什么
EDIT:我重写了
Dispose(bool disposing)
方法,因为基本TraceListener
类已经实现了一次性模式,但是,据我所知,该方法没有被调用。如果我实现一个显式析构函数,就会调用析构函数,但此时我不应该假设流引用仍然有效,是吗?我建议您在关闭底层StreamWriter之前,在自定义TraceListener
类的dispose方法中执行此操作。如果您的软件未调用Trace。在终止时关闭,则无法确保完成任何刷新。
有关更多详细信息,请参见。您应该在自定义tracelistener中覆盖Close
方法,并在此处覆盖Flush
和Dispose
基线StreamWriter