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

参数

delegateInterface
表示事件处理程序的委托对象的接口。

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 运行时参考文档中的 Windows::Foundation::EventRegistrationToken 结构主题。

EventSource::targets_

包含一个或多个事件处理程序的数组。

ComPtr<Details::EventTargetArray> targets_;

注解

如果发生当前 EventSource 对象表示的事件,则将调用这些事件处理程序。

EventSource::targetsPointerLock_

同步对内部数据成员的访问,即使在添加、删除或调用 EventSource 的事件处理程序时也是如此。

Wrappers::SRWLock targetsPointerLock_;