使用Visual Studio 2010并在尝试读取文件时几乎随机获取“文件被其他进程使用”。我用相同的程序将10个xml文件读入内存
中断的代码是
private static TextReader CreateTextReader(IsolatedStorageFile isolatedStorageFolder, string path)
{
TextReader textReader = null;
if (isolatedStorageFolder == null)
textReader = new StreamReader(path);
else
textReader = new StreamReader(new IsolatedStorageFileStream(path, FileMode.Open, isolatedStorageFolder));
return textReader;
}
代码在
上占10%的时间 textReader = new StreamReader(path);
我个人认为它有某种垃圾收集问题,任何人都有关于如何调试此类问题的任何提示。
答案 0 :(得分:1)
请务必在可能锁定文件的所有蒸汽读取器操作上调用.Dispose或.Close。这可能是你的问题,因为该代码对我来说是一个扁平的程序。
答案 1 :(得分:1)
您需要处置TextReader
。使用{/ 1}}语句,如
using
否则,当您关闭应用程序时,文件将保持打开状态。
修改强>
您在评论中说过您实际上已经在使用using (TextReader r = CreateTextReader(...))
{
}
的问题 - 您尝试阅读的文件是否实际上是由另一个应用程序打开的?有时antivir解决方案会在扫描文件时锁定文件或类似的东西 - 它会在一段时间后工作还是你必须重启或类似的东西?