【发布时间】:2013-11-26 05:34:07
【问题描述】:
我有一个用 .NET 3.5 编写的程序,它将数据保存到一个 XML 文件中,之后大部分时间都不会处理它。但是,有时它需要重新读取该 XML 文件。当我尝试执行此操作时,XML 文件读取失败,并显示该文件“正在被另一个进程使用”的错误。
这是执行 XML 文件写入的代码:
DataSet ds = new DataSet();
ds.Tables.Add(populatedDataTable);
XmlTextWriter xmlWrite = new XmlTextWriter("C:\test\output.xml", Encoding.UTF8);
ds.WriteXml(xmlWrite);
xmlWrite.Close();
下面是尝试读回 XML 文件的代码:
TextReader tr = new StreamReader("C:\test\output.xml");
DataSet dsXmlData = new DataSet();
dsXmlData.ReadXml(tr);
既然 XmlTextWriter.Close() 方法在第一个块中运行,为什么该文件仍在使用中?我也尝试在第一个块中调用 DataSet 上的 Dispose() 方法,但这没有帮助。这里可能缺少什么?
我还测试了在调试模式下运行程序,然后在第一个代码块运行后稍等片刻,然后再继续。它仍然给出了同样的错误,这不是代码运行得太近以至于在尝试读取之前文件写入没有完全释放的问题。
谢谢!
【问题讨论】:
-
根据 MSDN,你真的应该使用静态 XmlWriter.Create 方法。
标签: c# xml dataset xmlwriter filelock