Interface IWorkerThreadClient

IWorkerThreadClient é a interface implementada pelos clientes da classe CWorkerThread.

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.

Sintaxe

__interface IWorkerThreadClient

Membros

Métodos

Nome Descrição
CloseHandle Implemente esse método para fechar o identificador associado a esse objeto.
Executar Implemente esse método para executar o código quando o identificador associado a esse objeto ficar sinalizado.

Comentários

Implemente essa interface quando você tiver um código que precise ser executado em um thread de trabalho em resposta a um identificador que está sendo sinalizado.

Requisitos

Cabeçalho: atlutil.h

IWorkerThreadClient::CloseHandle

Implemente esse método para fechar o identificador associado a esse objeto.

HRESULT CloseHandle(HANDLE  hHandle);

Parâmetros

hHandle
O identificador a ser fechado.

Valor de Devolução

Retorna S_OK se houver êxito ou um erro HRESULT, em caso de falha.

Comentários

O identificador passado para esse método foi anteriormente associado a esse objeto por uma chamada à CWorkerThread::AddHandle.

Exemplo

O seguinte código mostra uma implementação simples do 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

Implemente esse método para executar o código quando o identificador associado a esse objeto ficar sinalizado.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

Parâmetros

dwParam
O parâmetro do usuário.

hObject
O identificador que ficou sinalizado.

Valor de Devolução

Retorna S_OK se houver êxito ou um erro HRESULT, em caso de falha.

Comentários

O identificador e o dword/ponteiro passados para esse método foram anteriormente associados a esse objeto por uma chamada à CWorkerThread::AddHandle.

Exemplo

O seguinte código mostra uma implementação simples do 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;
}

Confira também

Classes
Classe CWorkerThread