【发布时间】:2019-05-25 17:52:41
【问题描述】:
我正在创建包含大量数据的应用程序,并且应该将一些数据添加到 FlowLayourPanel。 我将它们全部添加到使用 for 中,并在每个 FOR 循环结束时添加。我已经测试了极端值,比如有 1000 个数组成员,它们都应该在屏幕上呈现。 我是多线程的,它的工作速度超快(对它们进行排序,计算最大值、最小值和总和),但是当它需要显示时,它需要 2 秒,甚至可能需要 3 秒,而且我不能多线程,因为 Windows 窗体不允许我这样做。
我的用户数组中不会有 1000 个成员,但我必须尝试一下,而且它必须与这么多成员一起使用。
有什么方法可以实现吗?
它滞后于这一刻,没有这部分代码它立即工作(4毫秒)
PFlow.Controls.Add(Dat[i]);
PFlow 是 flowlayoutpanel 而 Dat[i] 是 data 数据实际上是一个包含 5 个变量、一个数组和几个函数的类。
当我通过 FlowLayoutPanel 快速滚动然后停止时,它会将整个程序冻结 2 秒,就像它再次渲染它一样
【问题讨论】:
-
启用双缓冲可能有助于解决渲染问题。
-
做了,还是一样,只是滚动时不闪烁
-
@rfmodulator 你至少知道多线程的方法吗?
-
您不能在与拥有 FLP 的线程不同的线程上进行绘制或交互。如果您在循环中做很多额外的事情,您可能可以将其卸载到并行进程......我需要查看更多代码来帮助解决滚动问题。
-
@rfmodulator 我做到了,用户 Parallel.For 然后我返回主线程并将其添加到父线程,这就是它的缓慢之处
标签: c# arrays windows winforms optimization