在我的程序中,我有一大堆代码
var lines = File.ReadAllLines(myFileName);
if (lines[0] != null)
{
//does a few things
File.WriteAllLines(myFileName, lines);
}
虽然起初效果不错,但最近它给了我一个例外,因为该文件大约90%的时间被另一个进程使用。这对我来说已经毫无意义,因为
File.ReadAllLines()
应该在读取后关闭文件。我在System.Threading.Thread.Sleep(3000)
之前添加了File.WriteAllLines()
,这使我的成功率提高到了约50%。难道是唯一的选择吗?我找不到任何人对File.ReadAllLines()
有类似问题的消息来源。任何建议,解释或实际修复都将有所帮助。我忍不住想念我一些东西。
编辑:用实际的代码编辑我的if语句,以防万一
编辑:我正在读取文件并将其写入网络共享,而不是本地计算机。
编辑:它似乎不是我的应用程序对文件的任何挂起版本,并且从this问题中使用FileUtil类可以判断的是,我的应用程序对文件具有锁定。
最佳答案
我已经弄清楚了问题所在。在到达此代码之前,有一些较旧的“旧版”代码由于过时的原因而快速读取文件。我们使用的许多旧版代码对流的使用非常草率,最近我一直在回溯并清理它,并在不使用任何地方的情况下实施正确的using()
语法。显然我错过了一个地方,并且有一个旧的StreamReader
从未被丢弃过。感谢大家的评论,在此过程中学到了一些东西。