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

禁用表单时如何提高WinForms性能?,winforms,performance,Winforms,Performance,在我们的开发系统中,以一种形式调用this.Enabled=false需要140到170毫秒。我们客户的许多计算机速度较慢 我们的系统以多种不同的形式工作。通常,用户会看到一个项目列表,并双击其中一个项目。系统禁用当前表单,从服务器异步读取数据(这就是禁用表单的原因),当数据到达时,它显示新表单以进行编辑。当用户准备好时,他关闭当前表单,系统启用上一个表单 与我们的系统打开新表单所需的总时间相比,170毫秒看起来非常糟糕 这是典型的时期: 禁用当前窗体:170毫秒 从服务器获取数据:400毫秒

在我们的开发系统中,以一种形式调用this.Enabled=false需要140到170毫秒。我们客户的许多计算机速度较慢

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

与我们的系统打开新表单所需的总时间相比,170毫秒看起来非常糟糕

这是典型的时期:

  • 禁用当前窗体:170毫秒
  • 从服务器获取数据:400毫秒
  • 显示新表单:200毫秒
获取数据意味着访问远程服务器,服务器从执行5到20次查询的数据库中读取信息并返回数据。很难解释为什么禁用一个表单要花费将近25%的时间

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

更新: 我没有提到,但我做了一个测试,只使用标准控件,没有任何逻辑。表单有点复杂(但并不疯狂)。它使用一个有3个选项卡的tabcontrol,我在每个选项卡中添加了不同的控件(picturebox、TextBox、ComboBox、Listbox等),总共在选项卡中添加了大约30个控件。我按下一个按钮,然后在表单中执行一个this.Enabled=false。这需要100到120毫秒。我们的软件更复杂,大约需要170毫秒

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

我找到了解释。测试是在笔记本电脑上进行的,能量模式被设置为平衡而不是高性能(我不知道这些英文名称是否正确)。Disabled=false命令对于平衡配置文件大约需要100毫秒,对于高性能配置文件大约需要20毫秒。这是一个很大的区别,因为笔记本电脑是连接电源而不是电池工作的。

当然,无需重新编程。在我的系统中禁用一个表单不需要那么长的时间。您需要发布演示问题的代码。您的应用程序有一些独特之处,猜测它可能是什么对我们没有什么好处。好的,对不起。我没有提到,但我做了一个测试,只使用标准控件,没有任何逻辑。表单有点复杂(但并不疯狂)。它使用一个有3个选项卡的tabcontrol,我在每个选项卡中添加了不同的控件(picturebox、TextBox、ComboBox、Listbox等),总共在选项卡中添加了大约30个控件。我按下一个按钮,然后在表单中执行一个this.Enabled=false。这需要100到120毫秒。我们的软件更复杂,大约需要170毫秒。你是如何计时的?很可能是计时器的分辨率影响了你的结果。允许具有电源管理功能的计算机动态挂起将对任何计时尝试造成严重破坏。不过,这并不一定会让应用程序运行得更慢。