首页 > 解决方案 > 加快 Windows 窗体元素的呈现

问题描述

我正在创建包含大量数据的应用程序,并且应该将一些数据添加到 FlowLayourPanel。我将它们全部添加到使用 for 中,并在每个 FOR 循环结束时添加。我已经测试了极端值,比如有 1000 个数组成员,它们都应该在屏幕上呈现。我是多线程的,它的工作速度超快(对它们进行排序,计算最大值、最小值和总和),但是当它需要显示时,它需要 2 秒,甚至可能需要 3 秒,而且我不能多线程它,因为 Windows 窗体不允许我这样做。

我的用户数组中不会有 1000 个成员,但我必须尝试一下,而且它必须与那么多成员一起工作。

有什么办法可以吗?

它在这一刻滞后,没有这部分代码它立即工作(4 ms)

PFlow.Controls.Add(Dat[i]);

PFlow 是 flowlayoutpanel 而 Dat[i] 是 data Data 实际上是一个包含 5 个变量、一个数组和几个函数的类。

此外,当我通过 FlowLayoutPanel 快速滚动然后停止时,它会将整个程序冻结 2 秒,就像它再次渲染它一样

标签: c#arrayswindowswinformsoptimization

解决方案


好的,所以我解决了这个问题,现在它是即时的。

它是这样的:

List<Control> lis = new List<Control>();
Parallel.For(/* Populate lis */);
PFlow.Controls.AddRange(lis.ToArray());

推荐阅读