Почему: видны, назначены ли управления TActions, влияющие на использование процессора приложением?

Если TAction TActionBatton ) используется TAction или TActionClientItem (Элемент < code> TActionToolBar ), и что объект отображается во время выполнения, тогда всякий раз, когда вы перемещаете мышь в форме (где угодно, кроме панелей инструментов), кажется, что дополнительная загрузка делается на ЦП на основе количества видимых указаний , то есть по сравнению с перемещением мыши, когда ни один из связанных с привязкой элементов не виден ни на одном из предыдущих упомянутых баров.

Очевидно, что заметный% дополнительной нагрузки полностью зависит от того, какой тип буровой установки вы используете, но я заметил, что фактическое различие может быть значительным, если у вас есть приложение:

  • много видимых связанных с привязкой элементов
  • пользовательский компонент, который уже выполняет небольшие вычисления для событий onMouseOver, таких как изменение внешнего вида элемента управления
  • пользовательский стиль Visual

Поэтому возникает вопрос, почему компоненты, связанные с видимым элементом, влияют на обработку движения мыши?

4
nl ja de
Спасибо, @whosrdaddy, не знал об этом. +1
добавлено автор Uli Gerhardt, источник
Играйте с параметром Application.ActionUpdateDelay, установите его на более высокое значение, а использование ЦП уменьшится
добавлено автор whosrdaddy, источник

2 ответы

Дизайн действий основан на простоте обновления действий. При перемещении мыши приложение получает много сообщений в очереди. Каждый раз, когда очередь опорожняется, приложение считается простаивающим, и все действия обновляются. И это может привести к высокому использованию процессора.

Эта проблема хорошо известна и признана в VCL. Например, посмотрите TApplication.ActionUpdateDelay .

7
добавлено
Спасибо за подробный ответ
добавлено автор Peter, источник

Из памяти: потому что каждое движение мыши вызывает события OnUpdate. По крайней мере, каждое движение мыши вызывает перечисление всех действий, чтобы определить, назначены ли их события OnUpdate, чтобы они могли быть запущены. Когда связанные элементы управления не видны, эти события не запускаются.

1
добавлено
Про Windows
Про Windows
941 участник(ов)

Microsoft Windows и всё, что с этим связано. Список интересных групп и каналов: https://github.com/goq/telegram-list

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot

Delphi & Lazarus
Delphi & Lazarus
274 участник(ов)

Чат про Delphi и Lazarus