我有一个TraceListener
对象,用于记录,在app.config中创建,指向USB记忆棒上的某个位置。
我收到IOException
消息
文件的卷已经外部更改,因此打开的文件不再有效。
在我移除设备之后尝试Trace.WriteLine()
然后将其重新插入。我知道它正在发生,因为当我拔掉它时,跟踪侦听器所具有的打开文件的句柄无效。
我设法通过在TraceListener上调用IOException
来阻止Close()
,但我无法弄清楚如何再次重新打开该文件的句柄。 TextWriterTraceListener.Close()
方法的MSDN文档说
自动调用Close后调用Write或WriteLine方法 重新打开流。
但它只是没有这样做。关闭流后,我没有得到进一步的输出。
编辑:
更多信息
我发现跟踪侦听器只能在我调用Close()
后尝试在驱动器拔出时尝试写入时再无法再写入。如果我在拔出驱动器时不写,那么再次插入驱动器并尝试写入,一切正常。我还验证了我的Trace.Listeners
集合仍然包含我的听众。
答案 0 :(得分:0)
我在一系列研究中发现Trace.Refresh()
似乎解决了这个问题,但是,从阅读rene的原始问题的评论来看,这个方法将重新初始化整个Trace框架。对我想要的东西来说似乎有点沉重,但也许这个答案会帮助别人。
来自MSDN的评论:
启动应用程序时捕获跟踪配置数据。 如果在应用程序启动后更改配置数据, 调用Refresh方法来更新跟踪配置数据。