另一个进程使用的调试文件

时间:2012-05-21 14:47:29

标签: c# debugging

使用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);

我个人认为它有某种垃圾收集问题,任何人都有关于如何调试此类问题的任何提示。

2 个答案:

答案 0 :(得分:1)

请务必在可能锁定文件的所有蒸汽读取器操作上调用.Dispose或.Close。这可能是你的问题,因为该代码对我来说是一个扁平的程序。

答案 1 :(得分:1)

您需要处置TextReader。使用{/ 1}}语句,如

using

否则,当您关闭应用程序时,文件将保持打开状态。

修改
您在评论中说过您实际上已经在使用using (TextReader r = CreateTextReader(...)) { } 的问题 - 您尝试阅读的文件是否实际上是由另一个应用程序打开的?有时antivir解决方案会在扫描文件时锁定文件或类似的东西 - 它会在一段时间后工作还是你必须重启或类似的东西?