来自后台工作者的C#Treeview更新

时间:2013-08-03 15:24:44

标签: c# linq treeview backgroundworker

我正在处理文件计数...当我在后台扫描目录时,我必须通过TreeView处理程序选择与ProgressChanged中的目录名具有相同名称的相应节点。

Treeview已经填充了具有指定根路径的所有子目录。

我的ProgressChanged事件将每15毫秒被触发一次..(所以快速不是这样)。

所以,当我在那个处理程序中更新我的treeview时,我的窗口是Freezed,而且速度很慢......甚至没有响应......

问题:

如何在快速运行的ProgressChanged处理程序中更新UI ..

代码

var nodes = tv.FlattenTree()
            .Where(n => n.Text == new FileInfo(CurrentFilePath).Directory.Parent.Name)
            .ToList();

通过上面的代码,我选择了Node。

if (nodes.Count() > 0)
{
    nodes[0].ForeColor = Color.Blue;
    nodes[0].EnsureVisible();
}

通过上面的代码我正在更新treeview ...

1 个答案:

答案 0 :(得分:1)

听起来这个任务正在以令人难以置信的速度进行更新,并且更新UI非常昂贵。你为什么不只更新每十分之一?您还可以在填充TreeView时禁用绘制 - 在UI处于活动状态时添加节点onmass会损害性能。