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