希望我能够得到一些帮助来解决一个令人恼火的问题,我似乎无法在任何地方找到明确的答案。
我使用 XDocument 对象将数据附加到 xml 文档,然后使用 xDoc.save(path) 覆盖现有文件,但由于某种原因,我第一次运行代码时会抛出错误,即使该文件未在使用中通过任何其他过程。
*“该进程无法访问文件“C:\XXX\XXXX\Telemetry\2011_11_22.tlm,因为它正在被另一个进程使用。”*
后续迭代不会造成问题。
这是我正在使用的代码,为了便于阅读,删除了 try/catch :-
XElement x = GenerateTelemetryNode(h); //Create a new element to append
if (File.Exists(path))
{
if (xDoc == null)
{
xDoc = XDocument.Load(new StreamReader(path));
}
}
else
{
xDoc = new XDocument();
xDoc.Add(new XElement("TSD"));
}
xDoc.Element("TSD").Add(x);
xmlPath = path;
xDoc.Save(path);
我确信对此有一个非常简单的解释。
非常感谢您的回复。
我预计问题是 StreamReader 尚未处理,在这种情况下它仍会附加到文档中。我建议使用将 StreamReader 创建包装在using
条款以确保在文档加载后立即处理:
if (xDoc == null)
{
using (var sr = new StreamReader(path))
{
xDoc = XDocument.Load(new StreamReader(sr));
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)