>我有一个用.NET 3.5编写的程序,它将数据保存到XML文件中,大多数时候之后会不理它。 但是,有时它需要读回该 XML 文件。 当我尝试执行此操作时,XML 文件读取失败,并显示该文件"正由另一个进程使用"的错误。
下面是执行 XML 文件写入的代码:
DataSet ds = new DataSet();
ds.Tables.Add(populatedDataTable);
XmlTextWriter xmlWrite = new XmlTextWriter("C:testoutput.xml", Encoding.UTF8);
ds.WriteXml(xmlWrite);
xmlWrite.Close();
下面是尝试读回 XML 文件的代码:
TextReader tr = new StreamReader("C:testoutput.xml");
DataSet dsXmlData = new DataSet();
dsXmlData.ReadXml(tr);
既然 XmlTextWriter.Close() 方法在第一个块中运行,为什么该文件仍在使用中? 我也尝试在第一个块中的数据集上调用 Dispose() 方法,但这没有帮助。 这里可能缺少什么?
我还测试了在调试模式下运行程序,然后在第一个代码块运行后等待一会儿,然后再继续。 它仍然给出了相同的错误,这不是代码运行得如此接近的问题,以至于在尝试读取之前文件写入没有完全释放。
谢谢!
我能够通过将逻辑更改为具有 using 语句而不是创建 XmlTextWriter 然后手动关闭它来解决问题。
这是旧代码:
XmlTextWriter xmlWrite = new XmlTextWriter("C:testoutput.xml", Encoding.UTF8);
ds.WriteXml(xmlWrite);
xmlWrite.Close();
这是不再有问题的新代码:
using(XmlTextWriter xmlWrite = new XmlTextWriter("C:testoutput.xml", Encoding.UTF8))
ds.WriteXml(xmlWrite);
对于任何好奇的人,我没有关于为什么 using 语句可以解决问题的答案,但我很高兴能解决这个问题。