为什么“New System.Windows.Forms.Button”在我的.net应用程序中花费更多时间

时间:2013-01-14 02:44:25

标签: .net winforms

现在,我面临一个非常奇怪的问题。我们有一个.net解决方案。这是一个包含大量项目的比较大的解决方案。在一个负责GUI的项目中,我们在客户端应用程序启动之前使用VB.net创建了许多winforms(标签,按钮,列表框等)。最近,客户问我们为什么我们的客户端应用程序需要更多时间进行初始化。

当我深入研究代码时,我发现只有一个“Me.BtnMenu = New System.Windows.Forms.Button”子句需要大约10毫秒才能完成。实际上,我们在客户端GUI初始化之前要构建数百个winforms。最近,我们将解决方案从vs2008迁移到vs2010。相比之下,在vs2008版本中,“New System.Windows.Forms.Button”的成本约为0~1ms,但在vs2010版本中,“New System.Windows.Forms.Button”的成本约为10~ 20ms,最终延迟了GUI的初始化。更有趣的是,GroupBox,Panel,RadioButton等其他控件在这两个版本中只花费了很多时间,只有按钮deos。

有人对此有任何想法吗?它困扰了我好几个星期,我仍然无法得到它。

1 个答案:

答案 0 :(得分:0)

它也可能是导致此问题的Button对象的父级。有时,如果在将新控件添加到其集合中时Panel / Form重新计算/重新绘制布局,则添加简单按钮等简单操作将花费更多时间。如果您使用的是自定义面板或添加/删除控件时计算的布局,请尝试将表单元素直接添加到表单中。

同时检查父窗体/面板是否有一种方法可以暂停重新绘制窗体或停止布局计算,例如BeingUpdate / EndUpdate(或类似的)。