紧跟File.WriteAllLines()后面的File.ReadAllLines()会因锁定而导致exception

在我的程序中,我有一大堆代码

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()有类似问题的任何来源。

任何建议,解释或实际修复都会有所帮助。 我情不自禁地觉得自己错过了什么。

编辑:用实际代码编辑我的if语句,这很重要

编辑:我正在读取和写入文件到网络共享,而不是我的本地计算机。

编辑:它似乎不是我的应用程序持有该文件的任何类型的挂起版本,从我在这个问题中使用FileUtil类我可以告诉,它是我的应用程序锁定文件。

我已经弄清楚问题是什么了。 在此代码到达之前,有一些较旧的“遗留”代码可以快速读取文件,因为它现在已经过时了。 我们拥有的许多遗留代码都非常粗心地使用了流,我最近回过头来清理它并在没有使用它的地方实现正确的using()语法。 显然我错过了一个地方,并且有一个从未被处理掉的旧StreamReader 。 感谢大家的评论,在过程中学到了一些东西。