关闭/重新打开用XML配置创建的TraceListener,指向外部USB棒

本文关键字:TraceListener 外部 USB 创建 新打开 配置 XML 关闭 | 更新日期: 2023-09-27 17:51:26

我有一个TraceListener对象,用于日志记录,在app.config中创建,指向USB棒上的位置。

我收到一个IOException,上面写着

文件的卷已被外部更改,因此打开的文件不再有效。

当尝试Trace.WriteLine()后,我已经删除了设备,然后把它插回去。我理解发生这种情况是因为当我拔掉Trace侦听器所拥有的打开文件的句柄时,它就失效了。

我已经设法通过调用tracellistener上的Close()来阻止IOException s,但我不知道如何再次重新打开同一文件的句柄。TextWriterTraceListener.Close()方法的MSDN文档说

在自动调用Close后调用Write或WriteLine方法重新打开流。

但它就是没有这样做。在关闭流之后,我没有得到进一步的输出。

编辑:

更多信息

我发现跟踪侦听器只有在我调用Close()之后,在驱动器拔掉插头时尝试写入时才无法再次写入。如果我在驱动器拔出时不写入,然后再次插入驱动器并尝试写入,一切都很好。我还验证了Trace.Listeners集合仍然包含侦听器。

关闭/重新打开用XML配置创建的TraceListener,指向外部USB棒

经过一堆研究,我发现Trace.Refresh()似乎解决了这个问题,但是,从阅读rene的原始问题的评论,这个方法将重新初始化整个Trace框架。对于我想要的东西来说,这似乎有点沉重,但也许这个答案会对别人有所帮助。

Trace.Refresh() on MSDN

MSDN注释:

跟踪配置数据在应用程序启动时被捕获。如果在应用程序启动后更改了配置数据,则调用Refresh方法来更新跟踪配置数据。