我有以下代码块,让我很头疼。
逻辑上来说,应该是可以工作的,因为我在使用文件流时提供了锁定。但是当它到达创建StreamWriter的那一行时,它失败并显示“文件不可写”。
现在我的程序是一个多线程应用程序。任何线程都可能尝试写入此文件。我需要程序锁定文件,读取内容,检查内容,然后写回任何更改。在该过程中,没有其他线程应该能够访问该文件。
逻辑上来说,应该是可以工作的,因为我在使用文件流时提供了锁定。但是当它到达创建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();
}