File.ReadAllLines()紧随其后的File.WriteAllLines()由于锁定导致异常
本文关键字:File 于锁定 锁定 异常 ReadAllLines WriteAllLines | 更新日期: 2023-09-27 18:07:19
在我的程序中,我有一段代码
var lines = File.ReadAllLines(myFileName);
if (lines[0] != null)
{
//does a few things
File.WriteAllLines(myFileName, lines);
}
虽然这一开始工作得很好,但最近它给了我一个异常,因为文件被另一个进程使用~90%的时间。这对我来说已经没有意义了,因为File.ReadAllLines()
应该在阅读后关闭文件。我在File.WriteAllLines()
之前添加了System.Threading.Thread.Sleep(3000)
,这将我的成功率提高到了~50%。睡觉和祈祷真的是我唯一的选择吗?我找不到任何人在File.ReadAllLines()
上有类似问题的来源。
EDIT:用实际代码编辑我的if语句,如果它重要的话
编辑:我正在读写文件到网络共享,而不是我的本地机器。
编辑:它似乎不是我的应用程序持有文件的任何类型的挂起版本,从我可以通过使用这个问题中的FileUtil类来判断,这是我的应用程序对文件有一个锁定。
我已经弄清楚问题是什么了。在此代码之前,有一些较旧的"遗留"代码可以快速读取文件,原因现在已经过时了。我们的许多遗留代码对流的使用非常草率,我最近一直在清理它,并在没有使用它的地方实现适当的using()
语法。显然我漏掉了一个点,并且有一个从未处理过的旧StreamReader
。感谢大家的评论,在这个过程中学到了一些东西。