WinForms性能案例:动态表单创建+绑定
本文关键字:创建 绑定 表单 动态 性能 案例 WinForms | 更新日期: 2023-09-27 17:59:16
我正在努力改进我们现有的winforms项目。我现在有点想不通,所以我想我会在这里透露一些细节,看看人们能提出什么建议。
表单是这样工作的:
我们有一个列表(从DB中获得),它定义了要使用完全限定的名称空间创建哪些控件。控件(基本上是用户控件)依次通过反射创建,并最终添加到表单上的面板中。现在,每个控件都可以有更多的内容,最终形成树状的控件层次结构。
每个控件都有自己的初始化,最后,将DataSet作为DataSource提供给窗体(和所有控件),其中数据绑定被添加并在它们中的每一个上进行。
特别是,在某些情况下,我们将特定的ROW绑定到控件,而不是DataTable/Set。因此,期望BindingManagerPosition调用来确定确切的行等。
通过大约30个用户控件,我们可以在大约10秒的时间内打开一个新表单,其中数据集几乎不包含任何数据。绑定大约需要3-4秒。
在复杂的数据状态下,我们谈论的是30-40秒的打开时间,绑定大约需要一半的时间。
现在,这是非常简化的,我敢打赌,我们有很多自己的代码会导致一些速度减慢,我对它进行了分析,以了解一些地方。
但性能的主要问题似乎是绑定。
我很乐意听到一些关于如何深入研究并发现此类性能问题的建议,尤其是一种对数百个绑定失败的混乱进行排序的方法。
是时候从数据库中检索所有设置了吗?
反射->反射发射,性能,但编码是皮塔。
如何将构建过程分为2部分:第一个只是构造所有项目,数据项目将被解除绑定/清空
那么下一轮是第th个数据绑定部分。
这样做,假设数据绑定很慢,至少ppl可以看到屏幕上弹出的内容。您可以给出数据绑定总是很糟糕的理由/借口,也可以单独研究这部分问题。