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