我有以下代码块,这让我很头疼。
从逻辑上讲,它应该可以工作,因为我正在使用在 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();
}