Partilhar via


IWorkerThreadClient Interface

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

IWorkerThreadClient é a interface implementada pelos clientes da classe CWorkerThread .

Importante

Esta classe e os seus membros não podem ser usados em aplicações que sejam executadas no Windows Runtime.

Sintaxe

__interface IWorkerThreadClient

Membros

Methods

Nome Description
CloseHandle Implemente este método para fechar a alavanca associada a este objeto.
Executar Implemente este método para executar código quando o handle associado a este objeto for sinalizado.

Observações

Implementa esta interface quando tiveres código que precisa de ser executado numa thread de trabalho em resposta a um handle ser sinalizado.

Requerimentos

Cabeçalho: atlutil.h

IWorkerThreadClient::CloseHandle

Implemente este método para fechar a alavanca associada a este objeto.

HRESULT CloseHandle(HANDLE  hHandle);

Parâmetros

hHandle
A maçaneta deve ser fechada.

Valor de retorno

Devolva S_OK em caso de sucesso, ou um erro HRESULT em caso de falha.

Observações

O handle passado para este método estava anteriormente associado a este objeto através de uma chamada para CWorkerThread::AddHandle.

Example

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

Implemente este método para executar código quando o handle associado a este objeto for sinalizado.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

Parâmetros

dwParam
O parâmetro do utilizador.

hObjeto
O nome que se tornou sinalizado.

Valor de retorno

Devolva S_OK em caso de sucesso, ou um erro HRESULT em caso de falha.

Observações

O handle e o DWORD/pointer passados para este método estavam anteriormente associados a este objeto através de uma chamada para CWorkerThread::AddHandle.

Example

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

Classes
Classe CWorkerThread