この質問には 2 つの部分があります。まず、ユーザーがプログラムで [メモの追加] ボタンをクリックしたときに、ドキュメント内の XML 要素のコンテンツにテキストを追加できるようにする必要があります。私はこれを問題なく行うことができます。ただし、ユーザーが後でメモを追加したい場合、「setElementValue」メソッドを呼び出すため、元のメモは消去されます。既存のテキストを置き換えるのではなく、既存のテキストにメモを追加する代替手段はありますか?
public static void addNote(ListViewItem file, string note)
{
int i = 0;
while (i < 20)
{
try
{
XDocument doc = XDocument.Load(Form1.CSDBpath + Form1.projectName + "\\Data.xml");
string name = file.Text;
var el = (from item in doc.Descendants("dataModule")
where item.Descendants("DMC").First().Value == name
select item).First();
if (el != null)
{
el.SetElementValue("notes", note);
}
doc.Save(Form1.CSDBpath + Form1.projectName + "\\Data.xml");
return;
}
catch
{
i++;
}
}
MessageBox.Show("Please try again in a moment, system busy (3)", "DAWS");
}
質問の 2 番目の部分: 私のコードでわかるように、多くのファイルのさまざまな情報を格納する xml データ ファイルにアクセスして書き込む必要があります (上記の質問によるメモを含む)。この xml データ ファイルは複数のユーザーによって共有されており、それらのユーザーのシステムが同時にファイルにアクセスしようとすることがあり、明らかに問題が発生しています。私はこれを回避するために、設定した回数だけループして、プログラムが繰り返し xml ファイルを開いて書き込もうとするようにしました。私はこれを受け入れられた方法で行っていますか、それとももっと良い方法がありますか?