Запуск метода в новом потоке - C# (183202)
Формулировка задачи:
Добрый день, помогите решить задания, у меня есть treeview, где есть метод на события BeforeExpand, мне нужно выполнять его в новом потоке, как это сделать?
private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e) { foreach (var childNode in e.Node.Nodes.Cast<TreeNode>()) if (childNode.Nodes.Count == 0) BuildChildNodes(childNode); } private void BuildChildNodes(TreeNode node) { try { RegistryKey key = (RegistryKey)node.Tag; foreach (var name in key.GetSubKeyNames()) { TreeNode child = new TreeNode(name) { Tag = key.OpenSubKey(name) }; node.Nodes.Add(child); } } catch { } }
Решение задачи: «Запуск метода в новом потоке»
textual
Листинг программы
private async void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e) { foreach (var childNode in e.Node.Nodes.Cast<TreeNode>()) if (childNode.Nodes.Count == 0) { RegistryKey key = (RegistryKey)childNode.Tag; await Task.Run(() => BuildChildNodes(childNode, key)); } } private void BuildChildNodes(TreeNode node, RegistryKey key) { try { foreach (var name in key.GetSubKeyNames()) { this.Invoke((MethodInvoker)delegate { TreeNode child = new TreeNode(name) { Tag = key.OpenSubKey(name) }; node.Nodes.Add(child); }, null); } } catch { } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д