Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Когда программа обнаруживает то, что произошло, она может уведомить своих клиентов. Например, если программа тикера акций обнаруживает изменение цены на акции, она может уведомить всех клиентов об изменении. Этот процесс уведомления называется запуском события.
С помощью COM объекты сервера могут использовать com-события для запуска событий без каких-либо сведений о том, какие объекты будут получать уведомления. Объекты также могут использовать подключенные объекты для хранения подробных сведений о клиентах, которые запрашивали уведомления.
Объекты, подключенные к COM, предоставляют исходящие интерфейсы своим клиентам в дополнение к входящим интерфейсам. В результате объекты и их клиенты могут участвовать в двунаправленном взаимодействии. Входящие интерфейсы реализуются в объекте и получают вызовы от внешних клиентов объекта, а исходящие интерфейсы реализуются на приемнике клиента и получают вызовы от объекта. Объект определяет интерфейс, который он хотел бы использовать, и клиент реализует его.
Объект определяет входящие интерфейсы и предоставляет реализации этих интерфейсов. Входящие интерфейсы доступны клиентам с помощью метода IUnknown::QueryInterface. Клиенты вызывают методы входящего интерфейса объекта, а объект выполняет необходимые действия от имени клиента.
Исходящие интерфейсы также определяются объектом, но клиент предоставляет реализации исходящих интерфейсов в объекте приемника, который создает клиент. Затем объект вызывает методы исходящего интерфейса в объекте приемника, чтобы уведомить клиента об изменениях в объекте, активировать события в клиенте, запросить что-то от клиента или, на самом деле, для любой цели создатель объекта придумал.
Пример исходящего интерфейса — интерфейс IButtonSink, определенный элементом управления кнопкой push, чтобы уведомить клиентов о своих событиях. Например, объект кнопки вызывает IButtonSink::OnClick в объекте приемника клиента, когда пользователь нажимает кнопку на экране. Элемент управления кнопкой определяет исходящий интерфейс. Чтобы клиент кнопки обрабатывал событие, клиент должен реализовать этот исходящий интерфейс в объекте приемника, а затем подключить этот приемник к элементу управления кнопки. Затем, когда события происходят в кнопке, кнопка вызовет приемник, в то время как клиент может выполнить любое действие, которое он хочет назначить этой кнопке.
Подключенные объекты предоставляют общий механизм взаимодействия между объектами. Любой объект, который хочет предоставлять события или уведомления любого типа, может использовать эту технологию. Помимо общего подключаемого объекта COM предоставляет множество специальных интерфейсов приемников и интерфейсов сайта, используемых объектами для уведомления клиентов о конкретных событиях, интересующих клиента. Например, IAdviseSink могут использоваться объектами для уведомления клиентов о данных и просмотре изменений в объекте.
Дополнительные сведения см. в следующих разделах: