Каковы преимущества использования DoEvents по сравнению с перекрашиванием в пользовательской форме в VBA? - PullRequest
2 голосов
/ 29 ноября 2010

Каковы преимущества использования DoEvents по сравнению с перерисовкой в ​​пользовательской форме в VBA? Это связано с производительностью, чтобы минимизировать раздражение, например мерцание экрана, или когда вам нужно обновить больше, чем просто форму?

Нужны разъяснения по поводу различий с точки зрения VBA.

1 Ответ

6 голосов
/ 29 ноября 2010

Как правило, VB6 и VBA используют DoEvents, чтобы сообщить процессору продолжить обработку сообщений в очереди сообщений. Он используется, когда в процессоре выполняется интенсивная обработка, поэтому пользовательский интерфейс программы по-прежнему реагирует на все другие события.

Пример. Вы используете алгоритм интенсивного поиска, если вы не добавили DoEvents, программа может зависнуть, пока не завершит поиск. С другой стороны, если вы добавите DoEvents (скажем, в цикл поиска), программа не будет зависать и все равно сможет обрабатывать все события программы, например (Отмена), отменяя поиск.

РЕДАКТИРОВАТЬ: я вижу, что DoEvents является более всеобъемлющим, чем Repaint, поскольку он имеет дело со всеми типами событий, не только обработки мерцания / зависания пользовательского интерфейса.

...