Запуск метода в новом потоке - 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 { }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д