如何在保存XmlDocument时解决IOException“另一个进程使用的文件”?

时间:2015-08-12 09:35:41

标签: c# ioexception xmldocument

当我尝试保存XML文档时,我编辑了IOException“另一个进程使用的文件”,当我尝试保存该文档时发生了。 任何想法如何解决这个问题?

注意:每次写入XmlDocument中的新元素时都会调用此方法。

    public void saveRectangleAsXMLFragment()
    {
            XmlDocument doc = new XmlDocument();

            doc.Load("test.xml");

            XmlDocumentFragment xmlDocFrag = doc.CreateDocumentFragment();

            String input = generateXMLInput();
            xmlDocFrag.InnerXml = input;

            XmlElement mapElement = doc.DocumentElement;
            mapElement.AppendChild(xmlDocFrag);

            input = null;
            mapElement = null;
            xmlDocFrag = null;

            doc.Save("test.xml");
     }

3 个答案:

答案 0 :(得分:0)

它可能是你的其他方法之一,或打开文件的代码的其他部分,并没有很好地解决它。尝试搜索此类问题。

答案 1 :(得分:0)

try this if your's application is only access that .xml file

1. Create a Object globally

object lockData = new object();

2.Use than object to lock statement where you save and load xml

lock(lockData )
{
     doc.Load("test.xml");
}   

lock(lockData )
{
     doc.Save("test.xml");
}   

答案 2 :(得分:0)

来自Jon Skeet的相关答案(请参见https://stackoverflow.com/a/8354736/4151626

XmlDocument.Save()处理文件流时似乎存在一个错误,该错误被固定,并且既不是Closed()也不是Disposed()。通过直接控制XmlDocument.Save()外部流的创建和处理,我可以解决此暂停错误。

//e.g.
XmlWriter xw = new XmlWriter.Create("test.xml");
doc.Save(xw);
xw.Close();
xw.Dispose();