0

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

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

我的ProgressChanged事件将每 15 毫秒触发 1 次..(不是很快)。

所以,当我在那个处理程序中更新我的树视图时,我的窗口被冻结了,而且速度很慢......甚至没有响应......

问题:

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

代码

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

通过上面的代码,我正在选择节点。

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

通过上面的代码,我正在更新树视图...

4

1 回答 1

1

听起来任务正在以令人难以置信的速度更新,并且更新 UI 相当昂贵。为什么不每十个刻度更新一次?您还可以在填充 TreeView 时禁用绘画 - 因为在 UI 处于活动状态时添加节点会影响性能。

于 2013-08-04T06:41:11.187 回答