【问题标题】:Finalizing a custom TraceListener with autoflush='false' (C#, .net)使用 autoflush='false' 完成自定义 TraceListener (C#, .net)
【发布时间】:2009-05-18 08:53:02
【问题描述】:

我正在编写一个自定义跟踪侦听器,以将跟踪消息写入添加轮换的文件(例如每天更改文件名)。
Flush 方法的覆盖中,我在底层StreamWriter 上调用Flush,但如果我在应用程序配置中设置autoflush='false',则在应用程序终止时不会调用Flush

当应用程序退出时,完成自定义跟踪侦听器的正确方法是什么?

编辑:我覆盖了Dispose(bool disposing) 方法,因为基础TraceListener 类已经实现了一次性模式,但是,据我所知,该方法没有被调用。如果我实现了显式析构函数,就会调用析构函数,但此时我不应该假设流引用仍然有效,对吧?

【问题讨论】:

    标签: c# .net configuration trace


    【解决方案1】:

    如果您的软件在终止时未调用 Trace.Close,则您无法确保完成任何刷新。 详情请见this article

    【讨论】:

      【解决方案2】:

      我建议您在关闭底层 StreamWriter 之前在自定义 TraceListener 类的 dispose 方法中执行此操作。

      【讨论】:

        【解决方案3】:

        您应该在自定义跟踪侦听器中覆盖 Close 方法,并在那里覆盖 FlushDispose 您的底层 StreamWriter

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-13
          • 2011-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多