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