Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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#WPF树视图的填充速度非常慢。未经授权的访问可能会减速?_C#_.net_Wpf - Fatal编程技术网

C#WPF树视图的填充速度非常慢。未经授权的访问可能会减速?

C#WPF树视图的填充速度非常慢。未经授权的访问可能会减速?,c#,.net,wpf,C#,.net,Wpf,我只是在玩一些C#WPF应用程序,我只是试图重新创建本地目录的树视图。它的速度非常慢,我认为部分原因是因为一些文件夹存在访问问题 如果我将路径设置为文档或下载其即时路径。如果我将它设置为justusers\或user\myUsername,它就会一直运行,我会捕获一系列访问异常。是否可以先检查我是否有权访问该目录,例如AppData或其他用户文件夹?或者是试接错误的位置 我的相关填充代码如下 private static TreeViewItem PopulateNodes(DirectoryI

我只是在玩一些C#WPF应用程序,我只是试图重新创建本地目录的树视图。它的速度非常慢,我认为部分原因是因为一些文件夹存在访问问题

如果我将路径设置为文档或下载其即时路径。如果我将它设置为justusers\或user\myUsername,它就会一直运行,我会捕获一系列访问异常。是否可以先检查我是否有权访问该目录,例如AppData或其他用户文件夹?或者是试接错误的位置

我的相关填充代码如下

private static TreeViewItem PopulateNodes(DirectoryInfo directoryInfo)
    {

        var directoryNode = new TreeViewItem { Header = directoryInfo.Name };

        try
        {
            foreach (var directory in directoryInfo.EnumerateDirectories())
                directoryNode.Items.Add(PopulateNodes(directory));

            foreach (var file in directoryInfo.EnumerateFiles())
                directoryNode.Items.Add(new TreeViewItem { Header = file.Name });


            return directoryNode;
        }
        catch (UnauthorizedAccessException ex){
            Console.WriteLine(ex);
        };

        return directoryNode;

    }

如果你递归调用这个函数,那么你必须限制深度,否则它会很慢。我想递归可能会很慢,你推荐的任何更好的方法。已经告诉过你:限制深度!您还可以在添加数据之前使用
Treeview.BeginUpdate()
,在添加数据之后使用
Treeview.EndUpdate()
来加快速度。限制递归方面做得不多,但我将尝试这两个建议。谢谢