Share via


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
委派物件的介面,表示事件處理常式。

令 牌
當此作業完成時,表示事件的控制碼。 使用此權杖做為 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
);

參數

令 牌
表示事件處理常式的控制碼。 當 Add() 方法註冊 事件處理常式時,會傳回此權杖。

傳回值

如果作業成功,會傳送 S_OK;反之則傳送表示錯誤的 HRESULT 值。

備註

如需結構的詳細資訊 EventRegistrationToken ,請參閱Windows 執行階段 參考檔中的 Windows::Foundation::EventRegistrationToken 結構 主題

EventSource::targets_

一或多個事件處理常式的陣列。

ComPtr<Details::EventTargetArray> targets_;

備註

當目前 EventSource 物件所表示的事件發生時,會呼叫事件處理常式。

EventSource::targetsPointerLock_

即使正在新增、移除或叫用這個 EventSource 的事件處理常式,也會同步處理內部資料成員的存取。

Wrappers::SRWLock targetsPointerLock_;