Interfaccia IWorkerThreadClient
IWorkerThreadClient
è l'interfaccia implementata dai client della classe CWorkerThread .
Importante
Questa classe e i relativi membri non possono essere usati nelle applicazioni eseguite in Windows Runtime.
Sintassi
__interface IWorkerThreadClient
Membri
Metodi
Nome | Descrizione |
---|---|
CloseHandle | Implementare questo metodo per chiudere l'handle associato a questo oggetto. |
Eseguire | Implementare questo metodo per eseguire il codice quando l'handle associato a questo oggetto viene segnalato. |
Osservazioni:
Implementare questa interfaccia quando si dispone di codice che deve essere eseguito su un thread di lavoro in risposta a un handle che viene segnalato.
Requisiti
Intestazione: atlutil.h
IWorkerThreadClient::CloseHandle
Implementare questo metodo per chiudere l'handle associato a questo oggetto.
HRESULT CloseHandle(HANDLE hHandle);
Parametri
hHandle
Handle da chiudere.
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Osservazioni:
L'handle passato a questo metodo è stato precedentemente associato a questo oggetto da una chiamata a CWorkerThread::AddHandle.
Esempio
Il codice seguente illustra una semplice implementazione di 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
Implementare questo metodo per eseguire il codice quando l'handle associato a questo oggetto viene segnalato.
HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);
Parametri
dwParam
Parametro utente.
hObject
Handle segnalato.
Valore restituito
Restituisce S_OK in caso di esito positivo o errore HRESULT in caso di errore.
Osservazioni:
L'handle e il puntatore DWORD passati a questo metodo sono stati precedentemente associati a questo oggetto da una chiamata a CWorkerThread::AddHandle.
Esempio
Il codice seguente illustra una semplice implementazione di 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;
}