共用方式為


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