我有这个开源库,但在解决问题时遇到了一些麻烦……这个库允许轻松创建 XML 文件来存储应用程序设置。但是我在保存更改时遇到了问题。
我有另一个应用程序,我正在使用这个库,每次应用程序窗口完成调整大小时,我都会调用库的 Save() 方法将窗口大小/位置保存到 XML 文件中。
大多数时候它工作正常,一切都被保存了。不过,偶尔,我会收到一个异常,说该文件正在被另一个进程使用。
我真的需要确保每次调用 Save() 方法时都保存更改,我需要以某种方式处理此异常或防止它发生。
你们有什么建议可以最好地处理这种情况?
Save() 方法的代码如下:
public void Save() {
// Create a new XML file if there's no root element
if(xDocument.DocumentElement == null) {
xDocument = new XmlDocument();
xDocument.LoadXml("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" +
"<" + XmlRootElement + ">\n</" + XmlRootElement + ">");
}
// OMITTED CODE WAS HERE (NOT IMPORTANT FOR THE PROBLEM)
// Create a new XML writer for the XML file
XmlWriter xWriter = XmlWriter.Create(XmlFilePath, new XmlWriterSettings() {
Indent = true,
IndentChars = "\t"
});
// Sort the XML file using the XSL sylesheet and save it
xslTransform.Transform(xDocument, xWriter);
// Clear the buffer and close the XML writer stream
xWriter.Flush();
xWriter.Close();
}