C# WinForms性能案例:动态表单创建&x2B;结合

C# WinForms性能案例:动态表单创建&x2B;结合,c#,.net,winforms,performance,data-binding,C#,.net,Winforms,Performance,Data Binding,我正在努力改进现有的winforms项目。 我现在有点不知所措,所以我想我应该在这里透露一些细节,看看人们能提出什么建议 表单的工作原理如下: 我们有一个列表(从数据库中获取),它使用完全限定的名称空间定义要创建哪些控件。 控件(基本上是usercontrols)依次通过反射创建,并最终添加到表单上的面板中。 现在,每个控件中都可以有更多控件,最后是一个树状的控件层次结构 每个控件都有自己的初始化,最后,一个数据集作为数据源提供给表单(和所有控件), 添加了数据绑定,并在每个数据绑定上进行 特别

我正在努力改进现有的winforms项目。 我现在有点不知所措,所以我想我应该在这里透露一些细节,看看人们能提出什么建议

表单的工作原理如下:

我们有一个列表(从数据库中获取),它使用完全限定的名称空间定义要创建哪些控件。 控件(基本上是usercontrols)依次通过反射创建,并最终添加到表单上的面板中。 现在,每个控件中都可以有更多控件,最后是一个树状的控件层次结构

每个控件都有自己的初始化,最后,一个数据集作为数据源提供给表单(和所有控件), 添加了数据绑定,并在每个数据绑定上进行

特别是,在某些情况下,我们将特定行绑定到控件,而不是DataTable/Set。 因此,需要BindingManager位置调用来确定确切的行,等等

通过大约30个用户控件,我们可以在大约10秒的时间内打开一个新表单, 数据集几乎不包含任何数据。绑定需要大约3-4秒的时间

在复杂的数据状态下,我们谈论的是30-40秒的开放时间, 装订大约要花一半的时间

现在,这是非常简单的,我打赌我们有很多自己的代码导致了一些减速, 我对它进行了分析,以了解一些点

但性能的主要问题似乎是绑定

我很想听到一些关于如何深入研究和发现此类性能问题的建议,
特别是一种对数百个绑定的混乱进行排序的方法。

是从数据库中检索所有设置的时候了吗

反射->反射发射,性能,但编码是pita

将构建过程分为两部分如何: 第一项只是构造所有项,数据项将被解除绑定/为空

下一轮是数据绑定部分

这样做,假设数据绑定很慢,至少ppl可以看到屏幕上弹出的东西。
您可以给出数据绑定总是很糟糕的原因/借口,也可以单独研究这部分问题。

不,数据库时间花在了其他地方。你对发射有什么看法?我尝试在这里进行“异步”加载,并依次加载/绑定每个控件,但由于ControlCollection的工作方式和反应,这会导致Winforms出现太多的怪癖。