IWorkerThreadClient 介面
IWorkerThreadClient
是由 CWorkerThread 類別的用戶端所實作的介面。
重要
這個類別及其成員不能用於在 Windows 執行階段 中執行的應用程式。
語法
__interface IWorkerThreadClient
成員
方法
名稱 | 描述 |
---|---|
CloseHandle | 實作這個方法以關閉與此對象相關聯的句柄。 |
執行 | 當與這個對象相關聯的句柄收到訊號時,請實作這個方法以執行程序代碼。 |
備註
當您有需要在背景工作線程上執行的程序代碼,以回應收到訊號的句柄時,請實作這個介面。
需求
標頭: atlutil.h
IWorkerThreadClient::CloseHandle
實作這個方法以關閉與此對象相關聯的句柄。
HRESULT CloseHandle(HANDLE hHandle);
參數
hHandle
要關閉的句柄。
傳回值
傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。
備註
傳遞至這個方法的句柄先前是由 CWorkerThread::AddHandle 的呼叫與此對象相關聯。
範例
下列程式代碼顯示的簡單實作 IWorkerThreadClient::CloseHandle
。
HRESULT CloseHandle(HANDLE hObject)
{
// Users should do any shutdown operation required here.
// Generally, this means just closing the handle.
if (!::CloseHandle(hObject))
{
// Closing the handle failed for some reason.
return AtlHresultFromLastError();
}
return S_OK;
}
IWorkerThreadClient::Execute
當與這個對象相關聯的句柄收到訊號時,請實作這個方法以執行程序代碼。
HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);
參數
dwParam
user 參數。
物件
已收到訊號的句柄。
傳回值
傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。
備註
呼叫 CWorkerThread::AddHandle 之前,傳遞至這個方法的句柄和 DWORD/指標與這個對象相關聯。
範例
下列程式代碼顯示的簡單實作 IWorkerThreadClient::Execute
。
HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject)
{
// Cast the parameter to its known type.
LONG* pn = reinterpret_cast<LONG*>(dwParam);
// Increment the LONG.
LONG n = InterlockedIncrement(pn);
// Log the results.
printf_s("Handle 0x%08X incremented value to : %d\n", (DWORD_PTR)hObject, n);
return S_OK;
}