Поделиться через


Обработка событий ADO

Модель событий ADO поддерживает определенные синхронные и асинхронные операции ADO, которые выдают события или уведомления до начала операции или после ее завершения. Событие фактически является вызовом подпрограммы обработчика событий, определенной в приложении.

Если вы предоставляете функции или процедуры обработчика для группы событий, которые происходят до начала операции, можно проверить или изменить параметры, переданные в операцию. Так как она еще не выполнена, можно либо отменить операцию, либо разрешить ее завершение.

События, возникающие после завершения операции, особенно важны при асинхронном использовании ADO. Например, приложение, запускающее асинхронную операцию Recordset.Open , получает уведомление с помощью события завершения выполнения по завершении операции.

Использование модели событий ADO добавляет некоторые издержки для приложения, но обеспечивает гораздо больше гибкости, чем другие методы обработки асинхронных операций, такие как мониторинг свойства State объекта с помощью цикла.

Примечание

Для обработки событий ADO необходимо использовать насос сообщений или использовать его в модели однопотоковых квартир (STA). События ADO обрабатываются внутренне путем создания скрытого окна. ADO публикует сообщения в этом окне, когда необходимо создать события. Это делается для отправки событий в поток, который называется IConnectionPoint::Advise в точке подключения. Эта архитектура может вызвать проблемы, если поток, который должен получать уведомления, не перекачивает сообщения окна. Потенциальные проблемы включают события ADO, которые не доставляются в поток, и глобальные трансляции окон истекают и, возможно, замедляют работу всей системы, так как скрытые окна не обрабатывают сообщения. Потоки STA обычно имеют насос сообщений, поэтому эта проблема не проявляется в потоках STA. Однако потоки MTA обычно не имеют насоса сообщений, поэтому проблема обычно проявляется в потоках MTA.

Этот раздел содержит следующие подразделы.

См. также:

Общие сведения об обработчике событий ADO
Создание экземпляра события ADO на различных языках
События ADO
Параметры события
Типы событий