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

Vedi anche

Classi
Classe CWorkerThread