gpt4 book ai didi

c# - 在 C# 中保存 XML 流表示它正在被另一个进程使用

转载 作者:太空宇宙 更新时间:2023-11-03 18:50:15 27 4
gpt4 key购买 nike

我有this开源库,我在解决问题时遇到了一些麻烦......这个库允许轻松创建一个 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();
}

最佳答案

XmlWriter 是 IDisposable。您应该将其包装在 using() 子句中。 http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.aspx

关于c# - 在 C# 中保存 XML 流表示它正在被另一个进程使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/849558/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com