MyTetra Share
Делитесь знаниями!
Многозадачность в коде Access Basic
Время создания: 16.03.2019 23:43
Текстовые метки: DoEvents
Раздел: !Закладки - VBA - Access
Запись: xintrea/mytetra_db_adgaver_new/master/base/1530987348c024m81c7j/text.html на raw.githubusercontent.com

Многозадачность в коде Access Basic

Проблема

Если в программе VBA используется цикл, который выполняется дольше одной-двух секунд, Access словно «замирает». Невозможно перемещать окна на экране, а щелчки мышью в Access игнорируются до тех пор, пока программа не выйдет из цикла. Почему это происходит? И что можно сделать, чтобы система могла работать?

Решение

Вероятно, вы уже замечали, что простой фрагмент кода VBA способен парализовать работу Access. Поддержка многозадачностьмногозадачности в 32-разрядных версиях Windows помогает лишь в том случае, если она поддерживается в приложениях. Оказывается, выполнение кода Basic не позволяет выполняться коду Access, поэтому многозадачная природа Windows здесь не поможет. Если ваша программа содержит очень долгие циклы, вы должны специально позаботиться о том, чтобы на время уступать управление Windows и позволять системе выполнять свою работу. В VBA эта задача решается при помощи команды DoEvents. При правильном использовании команды DoEvents приложение-«монополист», подавляющее многозадачные возможности Access, превращается в нормальное приложение, которое позволяет Access нормально работать во время выполнения кода VBA.

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования