Udostępnij za pośrednictwem


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

Zobacz też

Klasy
Klasa CWorkerThread