私は頭痛を与えている次のコードブロックを持っています。FileStream読み書き用にファイルをロックするC#
私は、usingステートメント内でロックを提供するfilestreamを使用しているため、論理的にはうまくいくはずです。 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();
}