关闭/重新打开用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
集合仍然包含侦听器。
经过一堆研究,我发现Trace.Refresh()
似乎解决了这个问题,但是,从阅读rene的原始问题的评论,这个方法将重新初始化整个Trace框架。对于我想要的东西来说,这似乎有点沉重,但也许这个答案会对别人有所帮助。
Trace.Refresh()
on MSDN
MSDN注释:
跟踪配置数据在应用程序启动时被捕获。如果在应用程序启动后更改了配置数据,则调用Refresh方法来更新跟踪配置数据。