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

时间:2017-05-22 08:58:15

标签: c#

有人可以帮我解决这个特定的代码块吗?

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

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

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

以下是下面的图片。

image1的

image1

IMAGE2

image2

这是我正在谈论的代码片段。如果你们想要完整的代码,请告诉我。

 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"); 
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

此代码不应以书面形式编写。这就是问题。假设你有100个目录。每个目录都有100个子目录。每个子目录都有100个子子目录。那是非常多的。但用户是否希望看到最深的目录?不,他想在他现在的目录中看到目录。因此,您应该只列出所选节点中的目录和文件。

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