Interfejs IWorkerThreadClient
IWorkerThreadClient
to interfejs implementowany przez klientów klasy CWorkerThread .
Ważne
Tej klasy i jej składowych nie można używać w aplikacjach wykonywanych w środowisko wykonawcze systemu Windows.
Składnia
__interface IWorkerThreadClient
Elementy członkowskie
Metody
Nazwa/nazwisko | opis |
---|---|
CloseHandle | Zaimplementuj tę metodę, aby zamknąć uchwyt skojarzony z tym obiektem. |
Execute | Zaimplementuj tę metodę, aby wykonać kod, gdy uchwyt skojarzony z tym obiektem zostanie zasygnalizowany. |
Uwagi
Zaimplementuj ten interfejs, gdy masz kod, który musi zostać wykonany w wątku procesu roboczego w odpowiedzi na sygnał dojścia.
Wymagania
Nagłówek: atlutil.h
IWorkerThreadClient::CloseHandle
Zaimplementuj tę metodę, aby zamknąć uchwyt skojarzony z tym obiektem.
HRESULT CloseHandle(HANDLE hHandle);
Parametry
hHandle
Uchwyt do zamknięcia.
Wartość zwracana
Zwracanie S_OK powodzenia lub błąd HRESULT po niepowodzeniu.
Uwagi
Dojście przekazane do tej metody zostało wcześniej skojarzone z tym obiektem przez wywołanie elementu CWorkerThread::AddHandle.
Przykład
Poniższy kod przedstawia prostą implementację elementu 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
Zaimplementuj tę metodę, aby wykonać kod, gdy uchwyt skojarzony z tym obiektem zostanie zasygnalizowany.
HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);
Parametry
dwParam
Parametr użytkownika.
hObject
Uchwyt, który stał się zasygnalizowany.
Wartość zwracana
Zwracanie S_OK powodzenia lub błąd HRESULT po niepowodzeniu.
Uwagi
Dojście i wskaźnik DWORD/wskaźnik przekazany do tej metody zostały wcześniej skojarzone z tym obiektem przez wywołanie metody CWorkerThread::AddHandle.
Przykład
Poniższy kod przedstawia prostą implementację elementu 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;
}