【发布时间】:2015-01-12 17:06:14
【问题描述】:
我有 250 个视觉对象,我需要将它们添加到 WrapPanel。当我这样做时,UI 会锁定几秒钟,这不是我想要的。有没有办法阻止这种情况?
private void ButtonClick()
{
Foreach(Visual item in ListOfVisuals)
{
WrapPAnel.Children.Add(item);
}
}
据我所知,我无法创建新的 Task.Run() => ButtonClick 来执行此操作,因为任务无法访问 UI。
【问题讨论】:
-
您是实现了
ListOfVisuals还是在访问它们时创建了新元素?即,您可以在将它们添加到包装面板之前优化创建吗? -
你应该分析一下到底是什么消耗了所有的时间。 250 个对象看起来并不多,我很惊讶它花了几秒钟。我怀疑枚举
ListOfVisuals相对耗时,或者您的布局(例如数据绑定或大量布局计算)导致速度变慢。
标签: c# wpf multithreading