代码如下:
public void GetFilesCount(System.IO.DirectoryInfo dirInfo)
        {            foreach (System.IO.DirectoryInfo subdir in dirInfo.GetDirectories())
            {
                pa += subdir.Name + "|";                foreach (System.IO.FileInfo fileinfo in subdir.GetFiles())
                {
                    totalFile1 += 1;
                    pb += fileinfo.FullName + "|";
                  
                }                totalFile += 1;
                GetFilesCount(subdir);
                
            }
        }
我使用如下代码遍历指定目录中的子目录和文件名称。并且把上面代码放入了一个线程,但为当在遍历时,CPU会猛增到80-90????请问上面代码哪里有问题导致CUP猛增,谢谢盼复

解决方案 »

  1.   

    是不是目录下的文件和子目录太多了,如果是文件太多这样应该是正常的吧,如果想CPU少占一点可以考虑在线程里sleep一下 :)
      

  2.   

    对,文件夹和文件是很多。而且线程中有sleep的。现在问题是在执行上面的函数过程中CPU占用率极高。不知道为什么?? 可是诸如瑞星之类的杀毒软件在遍历目录时CPU也就20-50之间。
      

  3.   

    文件多的话就在
    System.Thread.Threading.Sleep(100);
    //(手写不知道写的对不对)
    totalFile += 1;
                    GetFilesCount(subdir);
      

  4.   

    感觉楼住的递归没有用对,
    public void GetFilesCount(System.IO.DirectoryInfo dirInfo)
    {foreach (System.IO.DirectoryInfo subdir in dirInfo.GetDirectories())
    {
    totalFile += 1;    //如果子目录也计算在内的话
    GetFilesCount(subdir);
    }foreach (System.IO.FileInfo fileinfo in subdir.GetFiles())
    {
    totalFile1 += 1;
    }
    }
    试试这个行不?
      

  5.   

    To sunjay117()  你的做法应该可以。我试过。有效。只是检测速度有所变慢,不过可以缓解CPU的压力,还是可以的To txwd0033()   你的方法好像只能检测目录中最后一个子目录里的文件,其余的都错过了。