私は、xml ファイルを読み取って編集するアプリケーションで作業していますが、XDocument クラスの Load() および Save() メソッドを使用しています。別のアプリケーション、またはアプリケーションの別のインスタンスが実行されている場合、1 つのドキュメントがメモリ内にある場合、他のドキュメントが行った変更を上書きする可能性があります xdocument が継続的に更新されていない (再読み込み)。同時実行プログラムは、xml ファイルの同じセクションを同時に編集することはありません。この問題を解決する最善の方法は何ですか? すべての変更を行う直前に Load を実行する必要がありますか、それともよりエレガントなアプローチがありますか?
2 に答える
3
最善の解決策は、XML を使用しないことです。
(小さな) データベースを使用します。
マルチユーザーの状況であらゆる種類のテキスト ファイルを使用することは十分に困難であり、それが異なるセクションにあるという事実は、固定長および (したがって) 固定位置のレコード (行) がある場合にのみ有益に使用できます。XML はこれを提供しません。
load-before-edit を実行すると、問題が発生する頻度が減るだけです。変更が失われる可能性は常にあり、ファイルシステム レベルで競合状態が発生します。それを機能させるには、ファイルをロックするスキームを使用する必要があります。これには追加のファイルが必要です。
于 2010-11-22T23:11:34.120 に答える
0
複数のプロセスがファイルを変更できることについて話している。そのデータを共通ストア (MS SQL) に入れる代わりにファイルを保持したい場合は、ミューテックスを実装して、常に 1 つのアプリケーションだけがファイルにアクセスできるようにする必要があります。
于 2010-11-22T23:20:59.807 に答える