当我尝试保存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");
}
它可能是你的其他方法之一,或打开文件的代码的其他部分,并没有很好地解决它。尝试搜索此类问题。
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");
}
来自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();