c# - 加快 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 秒,就像它再次渲染它一样
解决方案
好的,所以我解决了这个问题,现在它是即时的。
它是这样的:
List<Control> lis = new List<Control>();
Parallel.For(/* Populate lis */);
PFlow.Controls.AddRange(lis.ToArray());
推荐阅读
- mysql - Laravel - 在 JS/Http 中使用 SQL id 的安全方式
- google-cloud-platform - 有没有办法在谷歌云 sql 中设置 net_read_timeout 标志的值?
- java - 命名扩展另一个抽象类的抽象类
- javascript - What is the best way to communicate and pass data between child polymer elements?
- python - python + sqlite 将变量插入 PRAGMA 语句
- laravel - 从自定义验证对象中检索参数
- ajax - 代码点火器验证-Ajax,错误:验证时功能工作->运行为真
- html - HTML - 按钮和输入
- python - 如何在 Eric6 中单独使用 Qt Designer 和 PyQt5 的离线文档?
- ruby-on-rails - Ruby on Rails - 权威宝石 - 未定义的方法