事件处理原则

所有事件处理共有三个步骤。 需执行以下操作:

  • 在对象上实现事件接口。

  • 当对象想要接收事件时,推荐事件源。

  • 当对象不再需要接收事件时取消推荐事件源。

实现事件接口的方式将取决于其类型。 事件接口可以是 vtable、dual 或 dispinterface。 由事件源的设计器来定义接口;实现该接口由你决定。

注意

尽管不存在事件接口不能为双重的技术原因,但有一些良好的设计原因,以避免使用双接口。 但是,这是事件的设计器/实现者做出的决定。 如果从事件 sink 的角度出发,则需要承认可能没有任何选择,只能实现双重事件接口。 有关双接口的详细信息,请参阅双接口和 ATL

推荐事件源可以分为三个步骤:

成功注册接收事件后,将根据源对象触发的事件调用对象事件接口上的方法。 不再需要接收事件时,可以通过 IConnectionPoint::Unadvise 将 Cookie 传回连接点。 这将中断源和接收器之间的连接。

请注意,在处理事件时避免引用周期。

另请参阅

事件处理