Управление Treeview - обходные пути ContextSwitchDeadlock

Я построил древовидный элемент управления, который отображает структуру каталогов любого диска или папки. Однако, если вы выбираете диск или что-то с большой структурой папок и подпапок, загрузка элемента управления занимает много времени, и в некоторых случаях отображается сообщение MDA ContextSwitchDeadlock. Я отключил сообщение об ошибке взаимоблокировки MDA, и оно работает, но я нене нравится фактор времени и приложение выглядит так, как будто оно заблокировано. Как я могу изменить код так, чтобы он продолжал перекачивать сообщения и вместо того, чтобы буферизовать весь вид и передавать его полностью элементу управления, есть ли способ передать его элементу управления при его создании?

//Call line
treeView1.Nodes.Add(TraverseDirectory(source_computer_fldbrowser.SelectedPath));

private TreeNode TraverseDirectory(string path)
    {
        TreeNode result;
        try
        {
            string[] subdirs = Directory.GetDirectories(path);
            result = new TreeNode(path);
            foreach (string subdir in subdirs)
            {
                TreeNode child = TraverseDirectory(subdir);
                if (child != null) { result.Nodes.Add(child); }
            }
            return result;
        }
        catch (UnauthorizedAccessException)
        {
            // ignore dir
            result = null;
        }
        return result;
    }

Спасибо Р.

Ответы на вопрос(1)

Ваш ответ на вопрос