データ ストレージに XML を使用する古いシステムがあります。別のミニプロジェクトにデータを使用する予定で、データのクエリ/更新に LINQ to XML を使用したいと考えていました。しかし、自分で処理する必要があるかどうかわからないシナリオが 2 つあります。
1- 次のコードに似たものがあり、2 人が同時に Save() を押した場合はどうなりますか? LINQ to XML は、保存する前にファイルが再び使用可能になるまで待ちますか?それとも単にスローしますか? 必要がない限り、ロックを入れたくありません:)
// I assume the next line doesn't lock the file
XElement doc = XElement.Load("Books.xml");
XElement newBook = new XElement("Book",
new XAttribute("publisher", "My Publisher"),
new XElement("author", "Me")));
doc.Add(newBook);
// What happens if two people try this at the same time?
doc.Save("Books.xml");
2- ドキュメントを Load() する場合は、特定のノードの下にエントリを追加してから、Save() をクリックします。別のユーザーがすでにそのノードの下に値を追加した場合 (Load() をヒットしたため)、さらに悪いことにノードを削除した場合はどうなりますか?
もちろん、これらの問題を回避することはできますが、回避する必要があるかどうかを教えてくれるドキュメントは見つかりませんでした。少なくとも最初のものは、確実にテストするには少し面倒です。