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_;
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: