Compartir a través de


IWorkerThreadClient (interfaz)

IWorkerThreadClient es la interfaz implementada por los clientes de la clase CWorkerThread.

Importante

Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.

Sintaxis

__interface IWorkerThreadClient

Miembros

Métodos

Nombre Descripción
CloseHandle Implementa este método para cerrar el control asociado a este objeto.
Ejecutar Este método se implementa para ejecutar código cuando se señale el identificador asociado a este objeto.

Comentarios

Implemente esta interfaz cuando tenga código que necesite ejecutarse en un subproceso de trabajo en respuesta a un identificador que se señale.

Requisitos

Header: atlutil.h

IWorkerThreadClient::CloseHandle

Implementa este método para cerrar el control asociado a este objeto.

HRESULT CloseHandle(HANDLE  hHandle);

Parámetros

hHandle
El manipulador que se va a cerrar.

Valor devuelto

Devuelve S_OK si es correcto o en caso de error, un error HRESULT.

Comentarios

El manipulador que se pasó a este método estaba anteriormente asociado a este objeto mediante una llamada a CWorkerThread::AddHandle.

Ejemplo

En el código siguiente se muestra una implementación sencilla de 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

Este método se implementa para ejecutar código cuando se señale el identificador asociado a este objeto.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

Parámetros

dwParam
El parámetro del usuario.

hObject
El manipulador que se ha indicado.

Valor devuelto

Devuelve S_OK si es correcto o en caso de error, un error HRESULT.

Comentarios

El manipulador y el puntero o DWORD que se pasó a este método estaba asociado anteriormente a este objeto mediante una llamada a CWorkerThread::AddHandle.

Ejemplo

En el código siguiente se muestra una implementación sencilla de 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;
}

Consulte también

Clases
CWorkerThread (clase)