次のように FileStream を開いています。
FileInfo file = new FileInfo(@"C:\Project.xml");
FileStream stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
XmlDocument document = new XmlDocument();
document.Load(stream);
プロジェクト ファイルが読み込まれると、ストリームが開かれます。ここで、変更が保存されたときにその内容を上書きできるようにする必要があります。この時点で、他のアプリ/ユーザーが変更を加えるのを防ぐために開いたままにしておく FileStream オブジェクトへの参照があります。
私が理解していないのは、書き込みメソッドがどのように機能するかです。前のデータと新しいデータのサイズが異なる場合があります。したがって、次のコードは意味がありません。
stream.Position = 0;
document.Save(stream);
stream.Close();
ストリームを閉じて再度開かずにコンテンツを上書きするにはどうすればよいですか? それは非論理的なようですが、そうであれば、ストリームを閉じてから再度開くまでの短い時間に、ファイルが他の何かによってロックされないようにするにはどうすればよいですか?