Вы можете связать (перехватить) обработку возникающих Событий используемых вами внешних объектов Component Object Model (COM),  для обработки их во внутренних объектах Visual FoxPro, для этого используется системная функция EVENTHANDLER( ). Например, для перехвата событий внешнего объекта ActiveX Data Object (ADO) RecordSet, вы можете определить выполнение внутреннего программного кода Visual FoxPro, когда указатель текущей записи перемещается в соответствующем объекте RecordSet. Функция EVENTHANDLER( ) определяет перехват (связывание) возникающих Событий в рассматриваемом объекте COM, который должен обладать соответствующим внутренним механизмом IConnectionPoint, интерфейсом, позволяющим выполнять описанное выше Связывание. Дополнительно смотрите раздел: EVENTHANDLER( ), функция.

Тем не менее, система Visual FoxPro не поддерживает прямой доступ к перехвату (связыванию) требуемых Событий через представленный механизм (интерфейс) IConnectionPoint. Для того, чтобы осуществить связывание Событий объекта COM, в соответствующем объекте Visual FoxPro, данный объект должен иметь характеристику Implement, позволяющую обрабатывать требуемые События объекта COM, данный объект должен иметь все соответствующие События внешнего объекта, чтобы управлять и обрабатывать все возникающие События, а не только требуемые вам. Если построенные События - Дублеры не выполняют требуемых функций внешнего объекта COM, данный объект теряет внешнее управление; может возникнуть ситуация внешней Ошибки.

Взамен Событий COM+, существующий сервис COM+, обеспечивает более предпочтительную стратегию для перехвата (связывания) требуемых Событий внешнего объекта COM. COM+ Events посылает и доставляет возникающие События между связанными Приложениями. Рассматриваемые приложения  могут получать и отправлять возникающие События другим взаимодействующим Приложениям, например: прием на работу нового сотрудника; новые сведения о курсе Акций; текущий уровень износа Оборудования, требуемого замены.

Для данной модели COM+ Events, Приложения, создающие оповещения (сообщения) о возникновении некоторого События, называются  Publisher (Издатель / Производитель). Другие приложения, получающие рассматриваемые Сообщения о Событиях называются Subscriber (Подписчики / Потребители). Рассматриваемая модель COM+ Events обычно называется Loosely Coupled Events, в этом случае Издатель и Подписчик не связаны в жесткие рамки, могут существовать независимо друг от друга, могут даже не знать о существовании друг друга; Подписчик активируется только в том случае, когда получает соответствующее Уведомление о возникновении некоторого События. В этом случае, вы определяете только те события в программном коде своего Объекта, которые вам требуется обрабатывать.

Для использования преимуществ модели COM+ Events, при создании Класса - Дублера вам необходимо обеспечить создание одного или нескольких механизмов обработки внешних Событий. Какждый механизм (интерфейс) обеспечивает одну группу соответствующих Методов или Событий внешнего объекта COM+. Вам требуется создать функциональный механизм Подписчика, который будет обрабатывать получаемые События. Наконец, вы создаете Приложение Издателя, которое имеет функциональные Объекты, которые в процессе своей жизнедеятельности будут порождать События, направляемые и обрабатываемые у Подписчика. Сервис событий должен обладать функциями доставки соответствующих сообщений Подписчику.

См. также