Управление 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;
}
Спасибо Р.