В приложении есть несколько мест, в которых вызывается 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;
}
}
ОБНОВЛЕНИЕ: Похоже, проблема не только в вызовах этой функции, а в том, что другой поток читает файл, пока эта функция выполняет запись. Какой лучший способ блокировки, чтобы мы не пытались записать файл во время его чтения?