アプリケーションには、同じファイルに対して 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;
}
}
更新: 問題はこの関数の呼び出しだけではないようですが、この関数の書き込み中に別のスレッドがファイルを読み取っているためです。読み取り中にファイルに書き込もうとしないようにロックする最善の方法は何ですか?