Запуск метода в новом потоке - 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 { }
}