Compartir a través de


IWorkerThreadClient (interfaz)

Nota:

La biblioteca de plantillas activas (ATL) sigue siendo compatible. Sin embargo, ya no estamos agregando características ni actualizando la documentación.

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

Encabezado: 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)