Поделиться через


EventSource - класс

Представляет негибкое событие. Функции-члены EventSource добавляют, удаляют и вызывают обработчики событий. Для гибких событий используйте AgileEventSource.

Синтаксис

template<typename TDelegateInterface>
class EventSource;

Параметры

TDelegateInterface
Интерфейс делегата, представляющего обработчик событий.

Участники

Открытые конструкторы

Имя Описание
EventSource::EventSource Инициализирует новый экземпляр класса EventSource.

Открытые методы

Имя Описание
EventSource::Add Добавляет обработчик событий, представленный указанным интерфейсом делегата, к набору обработчиков событий для текущего EventSource объекта.
EventSource::GetSize Извлекает количество обработчиков событий, связанных с текущим EventSource объектом.
EventSource::InvokeAll Вызывает каждый обработчик событий, связанный с текущим EventSource объектом, с помощью указанных типов аргументов и аргументов.
EventSource::Remove Удаляет обработчик событий, представленный указанным маркером регистрации событий из набора обработчиков событий, связанных с текущим EventSource объектом.

Защищенные члены данных

Имя Описание
EventSource::addRemoveLock_ Синхронизирует доступ к массиву targets_ при добавлении, удалении или вызове обработчиков событий.
EventSource::targets_ Массив одного или нескольких обработчиков событий.
EventSource::targetsPointerLock_ Синхронизирует доступ к внутренним членам данных, даже если обработчики событий для этого EventSource добавляются, удаляются или вызываются.

Иерархия наследования

EventSource

Требования

Заголовок: event.h

Пространство имен: Microsoft::WRL

EventSource::Add

Добавляет обработчик событий, представленный указанным интерфейсом делегата, к набору обработчиков событий для текущего EventSource объекта.

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

Параметры

делегатInterface
Интерфейс для объекта делегата, который представляет обработчик событий.

token
После завершения операции представляет дескриптор события. Используйте этот маркер в качестве параметра для метода Remove(), чтобы отменить обработчик событий.

Возвращаемое значение

Значение S_OK, если операция завершилась успешно; в противном случае — значение HRESULT, указывающее на ошибку.

EventSource::addRemoveLock_

Синхронизирует доступ к массиву targets_ при добавлении, удалении или вызове обработчиков событий.

Wrappers::SRWLock addRemoveLock_;

EventSource::EventSource

Инициализирует новый экземпляр класса EventSource.

EventSource();

EventSource::GetSize

Извлекает количество обработчиков событий, связанных с текущим EventSource объектом.

size_t GetSize() const;

Возвращаемое значение

Количество обработчиков событий в targets_.

EventSource::InvokeAll

Вызывает каждый обработчик событий, связанный с текущим EventSource объектом, с помощью указанных типов аргументов и аргументов.

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
);

Параметры

T0
Тип нулевого аргумента обработчика событий.

T1
Тип первого аргумента обработчика событий.

T2
Тип второго аргумента обработчика событий.

T3
Тип третьего аргумента обработчика событий.

T4
Тип четвертого аргумента обработчика событий.

T5
Тип пятого аргумента обработчика событий.

T6
Тип шестого аргумента обработчика событий.

T7
Тип седьмого аргумента обработчика событий.

T8
Тип восьмого аргумента обработчика событий.

T9
Тип девятого аргумента обработчика событий.

arg0
Нулевой аргумент обработчика событий.

arg1
Первый аргумент обработчика событий.

arg2
Второй аргумент обработчика событий.

arg3
Третий аргумент обработчика событий.

arg4
Четвертый аргумент обработчика событий.

arg5
Пятый аргумент обработчика событий.

arg6
Шестой аргумент обработчика событий.

arg7
Седьмой аргумент обработчика событий.

arg8
Восьмой аргумент обработчика событий.

arg9
Девятый аргумент обработчика событий.

EventSource::Remove

Удаляет обработчик событий, представленный указанным маркером регистрации событий из набора обработчиков событий, связанных с текущим EventSource объектом.

HRESULT Remove(
   EventRegistrationToken token
);

Параметры

token
Дескриптор, представляющий обработчик событий. Этот маркер был возвращен при регистрации обработчика событий методом Add( ).

Возвращаемое значение

Значение S_OK, если операция завершилась успешно; в противном случае — значение HRESULT, указывающее на ошибку.

Замечания

Дополнительные сведения о EventRegistrationToken структуре см. в разделе "Структура Windows::Foundation::EventRegistrationToken" в справочной документации по среда выполнения Windows.

EventSource::targets_

Массив одного или нескольких обработчиков событий.

ComPtr<Details::EventTargetArray> targets_;

Замечания

При возникновении события, представленного текущим EventSource объектом, вызываются обработчики событий.

EventSource::targetsPointerLock_

Синхронизирует доступ к внутренним элементам данных даже при добавлении, удалении или вызове обработчиков EventSource событий.

Wrappers::SRWLock targetsPointerLock_;