应用程序中有多个地方在同一个文件上调用XmlWriter.Create,所有这些地方都通过以下函数访问。当一个调用时另一个仍在写入时,会出现IOException异常。最好的方法是锁定或同步访问权限是什么?
以下是正在使用的函数:
public void SaveToDisk()
{
try
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
using (XmlWriter writer = XmlWriter.Create(SaveFileAbsolutePath, settings))
{
XamlWriter.Save(this, writer);
writer.Close();
}
}
catch (Exception ex)
{
// Log the error
System.Diagnostics.Debug.WriteLine(ex.Message);
// Rethrow so we know about the error
throw;
}
}
更新:看起来问题不仅仅是调用此函数时出现的,而是因为另一个线程在此函数写入文件时正在读取该文件。最好的方法是如何进行锁定,以便我们在读取文件时不尝试写入文件?