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

时间:2013-01-29 07:23:06

标签: windows delphi cpu-usage taction

如果TAction链接到对象,例如TToolButton(项目TToolBar)或TActionClientItem(项目TActionToolBar)且该对象是在运行时可见,然后每当你在窗体中移动鼠标时(除工具栏之外的任何地方),基于可见TA的数量,似乎在CPU上进行了额外的加载,这与移动鼠标时没有任何关系。 TAction链接的项目在前面提到的任何一个栏上都可见。

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

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

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

2 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:1)

从内存中:因为每次鼠标移动都会触发OnUpdate事件。至少每个鼠标移动都会触发所有操作的枚举,以查看是否已分配其OnUpdate事件以便可以触发它们。当链接的控件不可见时,不会触发这些事件。