“为什么?”;新系统.Windows.Forms.Button“;在我的.net应用程序中花更多的时间

“为什么?”;新系统.Windows.Forms.Button“;在我的.net应用程序中花更多的时间,.net,winforms,.net,Winforms,现在,我面临一个非常奇怪的问题。我们有一个.net解决方案。这是一个比较大的解决方案,包含很多项目。在一个负责GUI的项目中,我们在启动客户端应用程序之前,使用VB.net创建了许多winforms(标签、按钮、列表框等)。最近,客户问我们为什么我们的客户端应用需要更多的时间来初始化 当我深入研究我们的代码时,我发现“Me.BtnMenu=newsystem.Windows.Forms.Button”子句的一部分需要大约10毫秒才能完成。实际上,在初始化客户端GUI之前,我们需要构建数百个win

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

当我深入研究我们的代码时,我发现“Me.BtnMenu=newsystem.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等,在这两个版本中都不会花费太多时间,只有button DEO


有人知道这件事吗?它让我困惑了好几个星期,我仍然无法得到它。

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


还要检查父窗体/面板是否有暂停窗体重绘或停止布局计算的方法,例如BeingUpdate/EndUpdate(或类似的方法)。

能否尝试测量在独立项目/解决方案中创建按钮所需的时间?只是为了确定是否是您的项目或机器中的其他内容可能导致此延迟。感谢您的回复和建议。更有趣的是,当我从项目中分离出一个表单并将其导入到新的解决方案中时,问题仍然存在,甚至更糟。初始化所有这些控件大约需要500毫秒,而在我的原始项目/解决方案中,大约需要200毫秒。这似乎与项目/解决方案的设置(如启用优化)无关。10-20毫秒是熟悉的数字之一。它是您在Windows上测量运行时间的准确度。与代码无关。使用真正的分析器。