Freigeben über


IWorkerThreadClient-Schnittstelle

IWorkerThreadClient ist die Schnittstelle, die von Clients der CWorkerThread-Klasse implementiert wird.

Wichtig

Diese Klasse und ihre Member können nicht in Anwendungen verwendet werden, die in der Windows-Runtime ausgeführt werden.

Syntax

__interface IWorkerThreadClient

Member

Methoden

Name Beschreibung
Closehandle Implementieren Sie diese Methode, um das diesem Objekt zugeordnete Handle zu schließen.
Ausführen Implementieren Sie diese Methode, um Code auszuführen, wenn das diesem Objekt zugeordnete Handle signalisiert wird.

Hinweise

Implementieren Sie diese Schnittstelle, wenn Sie Code haben, der in einem Arbeitsthread ausgeführt werden muss, um darauf zu reagieren, dass ein Handle signalisiert wird.

Anforderungen

Header: atlutil.h

IWorkerThreadClient::CloseHandle

Implementieren Sie diese Methode, um das diesem Objekt zugeordnete Handle zu schließen.

HRESULT CloseHandle(HANDLE  hHandle);

Parameter

hHandle
Der zu schließende Ziehpunkt.

Rückgabewert

Gibt S_OK bei Erfolg zurück oder ein HRESULT-Fehler beim Fehler.

Hinweise

Das an diese Methode übergebene Handle wurde zuvor durch einen Aufruf von CWorkerThread::AddHandle diesem Objekt zugeordnet.

Beispiel

Der folgende Code zeigt eine einfache Implementierung von 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

Implementieren Sie diese Methode, um Code auszuführen, wenn das diesem Objekt zugeordnete Handle signalisiert wird.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

Parameter

dwParam
Der Benutzerparameter.

hObject
Der Ziehpunkt, der signalisiert wurde.

Rückgabewert

Gibt S_OK bei Erfolg zurück oder ein HRESULT-Fehler beim Fehler.

Hinweise

Der an diese Methode übergebene Handle und DWORD/Zeiger wurden zuvor durch einen Aufruf von CWorkerThread::AddHandle diesem Objekt zugeordnet.

Beispiel

Der folgende Code zeigt eine einfache Implementierung von 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;
}

Siehe auch

Klassen
CWorkerThread-Klasse