COM събития, Microsoft Docs

Този раздел предоставя преглед на точките на свързване и въвежда терминологията, която обикновено се използва за описание на COM събития.

Точките на свързване осигуряват двупосочна комуникация между клиент и сървър в COM. Използвайки този механизъм, COM сървърът може да се свърже с клиента, когато възникне събитие. Сървър (като Microsoft Internet Explorer) може да предизвика събитие, за да уведоми съответната клиентска програма за промяна (като промяна на заглавие). За да се подготви за получаване на входящи известия, клиентът създава вътрешен COM обект, наречен приемник на събития. При получаване на известие, клиентът може да предприеме действия, свързани със събитието.

Приемникът на събитие съдържа интерфейс за предоставяне на сървъра на методи, свързани със събитието. Сървърите генерират събития чрез извикване на методи, свързани със събития. Клиентът внедрява интерфейса за приемник на събития като нормален COM интерфейс. Сървърът обявява интерфейса като изходящ; създателят на COM сървър прилага атрибутаsource към интерфейс в библиотеката с типове COM сървър. Сървърът използва дефинициите от интерфейса за приемане на събития, за да дефинира методитеsink иinvoke.

COM клиент, който реализира интерфейса за приемник на събития, често се нарича приемник на събития или просто приемник. На следващата фигура приемникът имплементира интерфейсаISinkEvents. Сървърът, който повдига събитието, се нарича източник.

Модел на събитие, базиран на точки на свързване

docs

След като интерфейсът на приемник на събития е дефиниран, приемникът трябва да бъде свързан (свързан) към източника. Механизмът на точката на свързване използва следния протокол за свързване на приемника и източника:

Приемникът питасървърен обектен интерфейсIConnectionPointContainer. Ако обектът поддържа точки за свързване, той връща указател.

Получателят използва методи на контейнерния обект, за да намери интерфейсаIConnectionPoint, който представлява конкретната точка на свързване. Тъй като сървърът може да поддържа множество изходящи интерфейси, клиентът трябва да съпостави своя приемник с идентификатора на интерфейса (IID) на конкретна точка на връзка.

Когато приемникът получи желания обект на точка на връзка, той извиква методаIConnectionPoint::Advise, за да регистрира указателя на интерфейса на приемника. Сървърът (източник) поддържа връзката (и предизвиква събития чрез нея), докато клиентът затвори връзката с помощта на методаIConnectionPoint::Unadvise.