次のコード ブロックが頭を悩ませています。
using ステートメント内でロックを提供するファイルストリームを使用しているため、論理的には機能するはずです。StreamWriter を作成する行に到達すると、「ファイルは書き込み可能ではありません」と言って失敗します。
現在、私のプログラムはマルチスレッド アプリケーションです。任意のスレッドがこのファイルに書き込もうとしている可能性があります。ファイルをロックし、内容を読み取り、内容を確認し、変更を書き戻すプログラムが必要です。そのプロセス中、他のスレッドはそのファイルにアクセスできません。
using (var fs = File.Open(fileLoc, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
var sr = new StreamReader(fs);
var str = sr.ReadToEnd();
var strArray = str.Split(',');
if (strArray.Any(st => st == text))
{
return;
}
sr.Close();
var sw = new StreamWriter(fs);
sw.Write(str + text);
sw.Flush();
sw.Close();
}