Freigeben über


EventSource-Klasse

Stellt ein nicht agiles Ereignis dar. EventSource-Memberfunktionen fügen Ereignishandler hinzu, entfernen sie und rufen sie auf. Verwenden Sie für agile Ereignisse AgileEventSource.

Syntax

template<typename TDelegateInterface>
class EventSource;

Parameter

TDelegateInterface
Die Schnittstelle zu einem Delegaten, der einen Ereignishandler darstellt.

Member

Öffentliche Konstruktoren

Name Beschreibung
EventSource::EventSource Initialisiert eine neue Instanz der EventSource-Klasse.

Öffentliche Methoden

Name Beschreibung
EventSource::Add Fügt den Ereignishandler an, der durch die angegebene Delegatenschnittstelle dargestellt wird, an den Satz von Ereignishandlern für das aktuelle EventSource Objekt an.
EventSource::GetSize Ruft die Anzahl der Ereignishandler ab, die dem aktuellen EventSource Objekt zugeordnet sind.
EventSource::InvokeAll Ruft jeden ereignishandler, der dem aktuellen EventSource Objekt zugeordnet ist, mithilfe der angegebenen Argumenttypen und Argumente auf.
EventSource::Remove Löscht den Ereignishandler, der durch das angegebene Ereignisregistrierungstoken dargestellt wird, aus der Gruppe von Ereignishandlern, die dem aktuellen EventSource Objekt zugeordnet sind.

Geschützte Datenmember

Name Beschreibung
EventSource::addRemoveLock_ Synchronisiert den Zugriff auf das targets_ Array beim Hinzufügen, Entfernen oder Aufrufen von Ereignishandlern.
EventSource::targets_ Ein Array von einem oder mehreren Ereignishandlern.
EventSource::targetsPointerLock_ Synchronisiert den Zugriff auf interne Datenmber, auch wenn Ereignishandler für diese EventSource hinzugefügt, entfernt oder aufgerufen werden.

Vererbungshierarchie

EventSource

Anforderungen

Header: event.h

Namespace: Microsoft::WRL

EventSource::Add

Fügt den Ereignishandler an, der durch die angegebene Delegatenschnittstelle dargestellt wird, an den Satz von Ereignishandlern für das aktuelle EventSource Objekt an.

HRESULT Add(
   _In_ TDelegateInterface* delegateInterface,
   _Out_ EventRegistrationToken* token
);

Parameter

delegateInterface
Die Schnittstelle zu einem Delegatenobjekt, das einen Ereignishandler darstellt.

token
Wenn dieser Vorgang abgeschlossen ist, wird ein Handle ausgeführt, das das Ereignis darstellt. Verwenden Sie dieses Token als Parameter für die Remove() -Methode, um den Ereignishandler zu verwerfen.

Rückgabewert

S_OK, wenn erfolgreich; andernfalls ein HRESULT, das den Fehler angibt.

EventSource::addRemoveLock_

Synchronisiert den Zugriff auf das targets_ Array beim Hinzufügen, Entfernen oder Aufrufen von Ereignishandlern.

Wrappers::SRWLock addRemoveLock_;

EventSource::EventSource

Initialisiert eine neue Instanz der EventSource-Klasse.

EventSource();

EventSource::GetSize

Ruft die Anzahl der Ereignishandler ab, die dem aktuellen EventSource Objekt zugeordnet sind.

size_t GetSize() const;

Rückgabewert

Die Anzahl der Ereignishandler in targets_.

EventSource::InvokeAll

Ruft jeden ereignishandler, der dem aktuellen EventSource Objekt zugeordnet ist, mithilfe der angegebenen Argumenttypen und Argumente auf.

void InvokeAll();
template <
   typename T0
>
void InvokeAll(
   T0arg0
);
template <
   typename T0,
   typename T1
>
void InvokeAll(
   T0arg0,
   T1arg1
);
template <
   typename T0,
   typename T1,
   typename T2
>
void InvokeAll(
   T0arg0,
   T1arg1,
   T2arg2
);
template <
   typename T0,
   typename T1,
   typename T2,
   typename T3
>
void InvokeAll(
   T0arg0,
   T1arg1,
   T2arg2,
   T3arg3
);
template <
   typename T0,
   typename T1,
   typename T2,
   typename T3,
   typename T4
>
void InvokeAll(
   T0arg0,
   T1arg1,
   T2arg2,
   T3arg3,
   T4arg4
);
template <
   typename T0,
   typename T1,
   typename T2,
   typename T3,
   typename T4,
   typename T5
>
void InvokeAll(
   T0arg0,
   T1arg1,
   T2arg2,
   T3arg3,
   T4arg4,
   T5arg5
);
template <
   typename T0,
   typename T1,
   typename T2,
   typename T3,
   typename T4,
   typename T5,
   typename T6
>
void InvokeAll(
   T0arg0,
   T1arg1,
   T2arg2,
   T3arg3,
   T4arg4,
   T5arg5,
   T6arg6
);
template <
   typename T0,
   typename T1,
   typename T2,
   typename T3,
   typename T4,
   typename T5,
   typename T6,
   typename T7
>
void InvokeAll(
   T0arg0,
   T1arg1,
   T2arg2,
   T3arg3,
   T4arg4,
   T5arg5,
   T6arg6,
   T7arg7
);
template <
   typename T0,
   typename T1,
   typename T2,
   typename T3,
   typename T4,
   typename T5,
   typename T6,
   typename T7,
   typename T8
>
void InvokeAll(
   T0arg0,
   T1arg1,
   T2arg2,
   T3arg3,
   T4arg4,
   T5arg5,
   T6arg6,
   T7arg7,
   T8arg8
);
template <
   typename T0,
   typename T1,
   typename T2,
   typename T3,
   typename T4,
   typename T5,
   typename T6,
   typename T7,
   typename T8,
   typename T9
>
void InvokeAll(
   T0arg0,
   T1arg1,
   T2arg2,
   T3arg3,
   T4arg4,
   T5arg5,
   T6arg6,
   T7arg7,
   T8arg8,
   T9arg9
);

Parameter

T0
Der Typ des Null-Ereignishandlerarguments.

T1
Der Typ des ersten Ereignishandlerarguments.

T2
Der Typ des zweiten Ereignishandlerarguments.

T3
Der Typ des dritten Ereignishandlerarguments.

T4
Der Typ des vierten Ereignishandlerarguments.

T5
Der Typ des fünften Ereignishandlerarguments.

T6
Der Typ des sechsten Ereignishandlerarguments.

T7
Der Typ des siebten Ereignishandlerarguments.

T8
Der Typ des achten Ereignishandlerarguments.

T9
Der Typ des neunten Ereignishandlerarguments.

arg0
Das Null-Ereignishandler-Argument.

arg1
Das erste Ereignishandlerargument.

arg2
Das zweite Ereignishandlerargument.

arg3
Das dritte Ereignishandlerargument.

arg4
Das vierte Ereignishandlerargument.

arg5
Das fünfte Ereignishandlerargument.

arg6
Das sechste Ereignishandlerargument.

arg7
Das siebte Ereignishandlerargument.

arg8
Das achte Ereignishandlerargument.

arg9
Das neunte Ereignishandlerargument.

EventSource::Remove

Löscht den Ereignishandler, der durch das angegebene Ereignisregistrierungstoken dargestellt wird, aus der Gruppe von Ereignishandlern, die dem aktuellen EventSource Objekt zugeordnet sind.

HRESULT Remove(
   EventRegistrationToken token
);

Parameter

token
Ein Handle, das einen Ereignishandler darstellt. Dieses Token wurde zurückgegeben, wenn der Ereignishandler von der Add() -Methode registriert wurde.

Rückgabewert

S_OK, wenn erfolgreich; andernfalls ein HRESULT, das den Fehler angibt.

Hinweise

Weitere Informationen zur EventRegistrationToken Struktur finden Sie im Thema "Windows::Foundation::EventRegistrationToken Structure" in der Windows-Runtime Referenzdokumentation.

EventSource::targets_

Ein Array von einem oder mehreren Ereignishandlern.

ComPtr<Details::EventTargetArray> targets_;

Hinweise

Wenn das Ereignis, das durch das aktuelle EventSource Objekt dargestellt wird, auftritt, werden die Ereignishandler aufgerufen.

EventSource::targetsPointerLock_

Synchronisiert den Zugriff auf interne Datenmmber, auch wenn Ereignishandler dafür EventSource hinzugefügt, entfernt oder aufgerufen werden.

Wrappers::SRWLock targetsPointerLock_;