ファイルシステムから XML をロードし、テキストボックスに入力する単純なページがあります。これらは更新および保存できます。シリアライズとデシリアライズには、次のメソッドを使用しています。
private static readonly object FormDataLock = new object();
public static FormData getFormData(string filename)
{
FormData fd;
lock (FormDataLock)
{
XmlSerializer x = new XmlSerializer(typeof(FormData));
using (Stream s = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
return (FormData)x.Deserialize(s);
}
}
}
public void saveFormData(string filename)
{
lock (FormDataLock)
{
XmlSerializer x = new XmlSerializer(typeof(FormData));
using (Stream s = new FileStream(filename, FileMode.Create, FileAccess.Write))
{
x.Serialize(s, this);
}
}
}
しかし、問題は、私が時々 gettig していることです (PageLoad の後で [保存] ボタンをクリックするのが速すぎることに気づいたように) IOException:
IOException: The process cannot access the file ".." because it is being used by another process.
ミューテックスでブロックをロックしようとしましたが、まだ正しく機能していません。ページ フォームは非常にシンプルですが、その上で UpdatePanel を使用しています (重要ですか?)。
ページが読み込まれ、最初の保存リクエストが正常に行われると、ボタンをできるだけ早くクリックでき、すべてが正常です (例外はありません)。