如何在禁用表单时提高WinForms性能?

时间:2014-09-08 07:29:55

标签: winforms performance

在我们的开发系统中,在表单中调用this.Enabled = false需要140到170毫秒。我们客户的许多电脑都比较慢。

我们的系统可以使用多种不同的形式。通常,用户会看到一个项目列表,并双击其中一个项目。系统禁用当前表单,异步读取服务器中的数据(这是禁用表单的原因),当数据到达时,它会显示新表单以进行编辑。当用户准备就绪时,他关闭当前表单,系统启用前一个表单。

当您与系统打开新表单所用的总时间进行比较时,170毫秒看起来非常糟糕。

这些是典型的时期:

  • 禁用当前表单:170毫秒
  • 从服务器获取数据:400毫秒
  • 显示新表格:200毫秒

获取数据意味着访问远程服务器,服务器从执行5到20个查询的数据库中读取信息并返回数据。很难解释禁用表单占用整个时间的近25%。

有没有办法改善禁用表单的时间?或者,我可以做些什么来避免我的客户点击或使用当前表单,直到信息被加载并显示下一个?

更新 我没有提到它,但我只使用标准控件进行测试,根本没有逻辑。形式有点复杂(但没有什么疯狂)。它使用带有3个选项卡的tabcontrol,在每个选项卡中我添加了不同的控件(图片框,文本框,组合框,列表框等),共有大约30个控件。我按一个按钮,然后我在表单中执行此操作.Enabled = false。这需要100到120毫秒。我们的软件更复杂,大约需要170毫秒。

更新2: 我找到了解释。测试是在笔记本电脑上进行的,能量曲线设置为平衡而不是高性能(我不知道这些是英文中的正确名称)。禁用命令使用平衡配置文件大约需要100 ms,高性能需要20 ms。这是一个很大的区别,因为笔记本电脑正在连接电源而不是电池。

1 个答案:

答案 0 :(得分:0)

我找到了解释。测试是在笔记本电脑上进行的,能量曲线设置为平衡而不是高性能(我不知道这些是英文中的正确名称)。使用平衡配置文件时,Disabled = false命令大约需要100 ms,高性能需要20 ms。这是一个很大的区别,因为笔记本电脑正在连接电源,而不是电池。