C#树视图从后台工作程序更新

本文关键字:工作程序 更新 后台 视图 | 更新日期: 2023-09-27 18:26:22

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

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

我的ProgressChanged事件将每15毫秒触发一次。。(太快了,不是吗?)。

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

问题:

如何在快速运行的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();
}

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

C#树视图从后台工作程序更新

听起来任务的更新速度令人难以置信,而且更新UI的成本相当高。你为什么不每十个勾号更新一次?您也可以在填充TreeView时禁用绘制,因为在UI处于活动状态时添加节点会影响性能。