为什么:可见,控制分配的TA影响应用程序的CPU使用率?

Pet*_*ter 4 windows delphi taction cpu-usage

如果a TAction链接到一个Object,例如TToolButton(Item of TToolBar)或TActionClientItem(Item of TActionToolBar),并且Object在运行时是可见的,那么每当你在表单中移动鼠标时(除工具栏之外的任何地方),似乎都会有额外的负载在CPU上基于可见TA的数量,与在前面提到的任一条上都没有看到TAction链接的项目时移动鼠标相比.

显而易见的是,额外负载的显着百分比完全取决于您正在运行的装备类型,但我注意到,当您拥有一个应用程序时,实际差异可能很大:

  • 很多可见的TAction链接项
  • 自定义组件,已对onMouseOver事件执行次要计算,例如更改控件的外观
  • 自定义视觉样式

所以问题是为什么可见项目链接的TAction组件会影响鼠标移动的处理?

Dav*_*nan 7

动作的设计基于动作的空闲时间更新.移动鼠标时,应用程序会收到大量排队的消息.每次清空队列时,应用程序都被视为空闲,并且所有操作都会更新.这可能导致高CPU利用率.

这个问题在VCL中众所周知并得到承认.例如,看看TApplication.ActionUpdateDelay.