Share via


Ereignisbehandlungsrichtlinien

Es gibt drei Schritte, die für alle Ereignisbehandlungen gemeinsam sind. Folgendes ist erforderlich:

  • Implementieren Sie die Ereignisschnittstelle für Ihr Objekt.

  • Empfehlen Sie der Ereignisquelle, dass Ihr Objekt Ereignisse empfangen möchte.

  • Heben Sie die Benachrichtigung der Ereignisquelle auf, wenn ihr Objekt keine Ereignisse mehr empfangen muss.

Die Art und Weise, wie Sie die Ereignisschnittstelle implementieren, hängt vom Typ ab. Eine Ereignisschnittstelle kann vtable, dual oder eine dispinterface sein. Es liegt an dem Designer der Ereignisquelle, die Schnittstelle zu definieren; es liegt an Ihnen, diese Schnittstelle zu implementieren.

Hinweis

Obwohl es keine technischen Gründe gibt, dass eine Ereignisschnittstelle nicht dual sein kann, gibt es eine Reihe guter Entwurfsgründe, um die Verwendung von Duals zu vermeiden. Dies ist jedoch eine Entscheidung des Designers/Implementierers der Ereignisquelle. Da Sie aus der Perspektive des Ereignisses sinkarbeiten, müssen Sie die Möglichkeit zulassen, dass Sie möglicherweise keine Wahl haben, sondern eine duale Ereignisschnittstelle implementieren. Weitere Informationen zu dualen Schnittstellen finden Sie unter Dual Interfaces und ATL.

Die Beratung der Ereignisquelle kann in drei Schritte unterteilt werden:

Nachdem Sie ihr Interesse am Empfangen von Ereignissen erfolgreich registriert haben, werden Methoden auf der Ereignisschnittstelle Des Objekts entsprechend den Vom Quellobjekt ausgelösten Ereignissen aufgerufen. Wenn Sie keine Ereignisse mehr empfangen müssen, können Sie das Cookie über I Verbinden ionPoint::Unadvise wieder an den Verbindungspunkt übergeben. Dadurch wird die Verbindung zwischen Quelle und Sink getrennt.

Achten Sie darauf, beim Behandeln von Ereignissen Referenzzyklen zu vermeiden.

Siehe auch

Ereignisbehandlung