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


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

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

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

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

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

Заметка

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

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

См. также

Обработчик событий ADO — сводка
Создание события ADO по языку
события ADO
параметры события
типы событий