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

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从未被丢弃过。感谢大家的评论,在此过程中学到了一些东西。

10-05 20:36