Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的C#程序内存问题和重复_C# - Fatal编程技术网

我的C#程序内存问题和重复

我的C#程序内存问题和重复,c#,C#,有人能帮我修复这个特定的代码块吗 这是我的问题。我写了一个程序,它的运行方式与Windows资源管理器类似,它为我提供了硬盘和计算机中所有其他驱动器中文件和文件夹的层次结构 下面的这段代码似乎存在程序顺利运行的问题。当我启动程序时,程序启动非常慢,需要很长时间才能最终加载。这是因为我的程序在最终加载之前,正在浏览我的所有文件和文件夹。对于拥有大量数据的计算机来说,这可能会很麻烦 我可以通过在try块注释掉这两行来解决这个问题。但当我运行程序并打开一个驱动器时,它会复制(例如:当我展开C:/dri

有人能帮我修复这个特定的代码块吗

这是我的问题。我写了一个程序,它的运行方式与Windows资源管理器类似,它为我提供了硬盘和计算机中所有其他驱动器中文件和文件夹的层次结构

下面的这段代码似乎存在程序顺利运行的问题。当我启动程序时,程序启动非常慢,需要很长时间才能最终加载。这是因为我的程序在最终加载之前,正在浏览我的所有文件和文件夹。对于拥有大量数据的计算机来说,这可能会很麻烦

我可以通过在try块注释掉这两行来解决这个问题。但当我运行程序并打开一个驱动器时,它会复制(例如:当我展开C:/drive,然后折叠C:/drive时,程序中会显示一个C:/drive的副本)

以下是图片

图1

图2

这就是我要说的代码。如果你们想要完整的代码,请告诉我

 private void GetDirectories(DirectoryInfo[] subDirs, TreeNode nodeToAddTo)
    {
        TreeNode aNode;
        DirectoryInfo[] subSubDirs;
        foreach (DirectoryInfo subDir in subDirs)
        {      
            aNode = new TreeNode(subDir.Name, 0, 0);
            aNode.Tag = subDir;
            aNode.ImageKey = "folder";
            try
            {
                //subSubDirs = subDir.GetDirectories();
                //GetDirectories(subSubDirs, aNode);
                nodeToAddTo.Nodes.Add(aNode);
            }
            catch(Exception e)
            {
                Console.WriteLine("none"); 
            }
        }
    }

此代码不应重复编写。这就是问题所在。假设您有100个目录。每个目录有100个子目录。每个子目录有100个子目录。太多了。但是用户是否希望看到最深的目录?不,他想查看他现在所在目录中的目录。所以您应该只列出选定节点中的目录和文件


所以不要在启动时构建整个树。只需列出主目录。当用户单击一个目录时,只列出它的子目录

不要递归地映射整个目录,这会导致代码长时间运行。相反,尝试在文件夹展开后立即加载子文件夹。另外,您的代码可能会有问题,使用不允许的目录。