Partage via


IWorkerThreadClient, interface

IWorkerThreadClient est l’interface implémentée par les clients de la classe CWorkerThread .

Important

Cette classe et ses membres ne peuvent pas être utilisés dans les applications qui s’exécutent dans Windows Runtime.

Syntaxe

__interface IWorkerThreadClient

Membres

Méthodes

Nom Description
CloseHandle Implémentez cette méthode pour fermer le handle associé à cet objet.
Execute Implémentez cette méthode pour exécuter du code lorsque le handle associé à cet objet devient signalé.

Notes

Implémentez cette interface lorsque vous avez du code qui doit s’exécuter sur un thread de travail en réponse à un handle qui devient signalé.

Spécifications

En-tête : atlutil.h

IWorkerThreadClient ::CloseHandle

Implémentez cette méthode pour fermer le handle associé à cet objet.

HRESULT CloseHandle(HANDLE  hHandle);

Paramètres

hHandle
Handle à fermer.

Valeur de retour

Retournez S_OK en cas de réussite ou une erreur HRESULT en cas d’échec.

Notes

Le handle passé à cette méthode a été précédemment associé à cet objet par un appel à CWorkerThread ::AddHandle.

Exemple

Le code suivant montre une implémentation simple 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

Implémentez cette méthode pour exécuter du code lorsque le handle associé à cet objet devient signalé.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

Paramètres

dwParam
Paramètre utilisateur.

hObject
Handle qui est devenu signalé.

Valeur de retour

Retournez S_OK en cas de réussite ou une erreur HRESULT en cas d’échec.

Notes

Le handle et le pointeur DWORD passés à cette méthode ont été précédemment associés à cet objet par un appel à CWorkerThread ::AddHandle.

Exemple

Le code suivant montre une implémentation simple 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;
}

Voir aussi

Classes
CWorkerThread, classe