在我的程序中,我有一段代码
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 语句,以防万一
编辑:我正在读取文件并将其写入网络共享,而不是我的本地计算机。
编辑:它似乎不是我的应用程序保存文件的任何类型的挂起版本,从我可以通过使用 FileUtil 类来判断this问题,是我的应用程序锁定了文件。
我已经弄清楚问题是什么了。在达到此代码之前,有一些较旧的“遗留”代码可以快速读取该文件,但现在已经过时了。我们有很多遗留代码对流的使用非常草率,我最近回过头来清理它并实现正确的using()
语法,无论它没有被使用。显然我错过了一个地方,并且有一个旧的StreamReader
那从未被处理掉。感谢大家的评论,在这个过程中学到了一些东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)