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();
}
通过上面的代码,我正在更新树视图。。。
听起来任务的更新速度令人难以置信,而且更新UI的成本相当高。你为什么不每十个勾号更新一次?您也可以在填充TreeView时禁用绘制,因为在UI处于活动状态时添加节点会影响性能。