Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Opmerking
De ATL (Active Template Library) wordt nog steeds ondersteund. We voegen echter geen functies meer toe of werken de documentatie bij.
Deze klasse maakt een werkrolthread of maakt gebruik van een bestaande thread, wacht op een of meer kernelobjectingangen en voert een opgegeven clientfunctie uit wanneer een van de ingangen wordt gesignaleerd.
Belangrijk
Deze klasse en de bijbehorende leden kunnen niet worden gebruikt in toepassingen die worden uitgevoerd in Windows Runtime.
Syntaxis
template <class ThreadTraits = DefaultThreadTraits>
class CWorkerThread
Parameterwaarden
ThreadTraits
De klasse die de functie voor het maken van threads biedt, zoals CRTThreadTraits of Win32ThreadTraits.
Leden
Beveiligde structuren
| Naam | Description |
|---|---|
WorkerClientEntry |
Openbare constructors
| Naam | Description |
|---|---|
| CWorkerThread::CWorkerThread | De constructor voor de werkrolthread. |
| CWorkerThread::~CWorkerThread | De destructor voor de werkrolthread. |
Openbare methoden
| Naam | Description |
|---|---|
| CWorkerThread::AddHandle | Roep deze methode aan om de ingang van een wachtbaar object toe te voegen aan de lijst die wordt onderhouden door de werkrolthread. |
| CWorkerThread::AddTimer | Roep deze methode aan om een periodieke wachttijdtimer toe te voegen aan de lijst die wordt onderhouden door de werkrolthread. |
| CWorkerThread::GetThreadHandle | Roep deze methode aan om de threadgreep van de werkrolthread op te halen. |
| CWorkerThread::GetThreadId | Roep deze methode aan om de thread-id van de werkrolthread op te halen. |
| CWorkerThread::Initialize | Roep deze methode aan om de werkrolthread te initialiseren. |
| CWorkerThread::RemoveHandle | Roep deze methode aan om een ingang te verwijderen uit de lijst met wachtbare objecten. |
| CWorkerThread::Afsluiten | Roep deze methode aan om de werkrolthread af te sluiten. |
Opmerkingen
CWorkerThread gebruiken
Maak een exemplaar van deze klasse.
CWorkerThread::AddHandle aanroepen met de ingang van een kernelobject en een aanwijzer naar een implementatie van IWorkerThreadClient.
- of -
CWorkerThread::AddTimer aanroepen met een aanwijzer naar een implementatie van IWorkerThreadClient.
Implementeer IWorkerThreadClient::Voer uit om actie te ondernemen wanneer de ingang of timer wordt gesignaleerd.
Als u een object uit de lijst met wachtbare objecten wilt verwijderen, roept u CWorkerThread::RemoveHandle aan.
Als u de thread wilt beëindigen, roept u CWorkerThread::Shutdown aan.
Requirements
Header: atlutil.h
CWorkerThread::AddHandle
Roep deze methode aan om de ingang van een wachtbaar object toe te voegen aan de lijst die wordt onderhouden door de werkrolthread.
HRESULT AddHandle(
HANDLE hObject,
IWorkerThreadClient* pClient,
DWORD_PTR dwParam) throw();
Parameterwaarden
hObject
De ingang naar een wachtbaar object.
pClient
De aanwijzer naar de IWorkerThreadClient-interface van het object dat moet worden aangeroepen wanneer de ingang wordt gesignaleerd.
dwParam
De parameter die moet worden doorgegeven aan IWorkerThreadClient::Execute when the handle is signaled.
Retourwaarde
Retourneert S_OK bij succes of een fout HRESULT bij fout.
Opmerkingen
IWorkerThreadClient::Execute wordt aangeroepen via pClient wanneer de ingang, hObject, wordt gesignaleerd.
CWorkerThread::AddTimer
Roep deze methode aan om een periodieke wachttijdtimer toe te voegen aan de lijst die wordt onderhouden door de werkrolthread.
HRESULT AddTimer(
DWORD dwInterval,
IWorkerThreadClient* pClient,
DWORD_PTR dwParam,
HANDLE* phTimer) throw();
Parameterwaarden
dwInterval
Hiermee geeft u de periode van de timer in milliseconden.
pClient
De aanwijzer naar de IWorkerThreadClient-interface van het object dat moet worden aangeroepen wanneer de ingang wordt gesignaleerd.
dwParam
De parameter die moet worden doorgegeven aan IWorkerThreadClient::Execute when the handle is signaled.
phTimer
[uit] Adres van de HANDLE-variabele die bij succes de ingang ontvangt voor de zojuist gemaakte timer.
Retourwaarde
Retourneert S_OK bij succes of een fout HRESULT bij fout.
Opmerkingen
IWorkerThreadClient::Execute wordt aangeroepen via pClient wanneer de timer wordt gesignaleerd.
Geef de timergreep van phTimer door aan CWorkerThread::RemoveHandle om de timer te sluiten.
CWorkerThread::CWorkerThread
De constructor.
CWorkerThread() throw();
CWorkerThread::~CWorkerThread
De destructor.
~CWorkerThread() throw();
Opmerkingen
Roept CWorkerThread::Shutdown aan.
CWorkerThread::GetThreadHandle
Roep deze methode aan om de threadgreep van de werkrolthread op te halen.
HANDLE GetThreadHandle() throw();
Retourwaarde
Retourneert de threadgreep of NULL als de werkrolthread niet is geïnitialiseerd.
CWorkerThread::GetThreadId
Roep deze methode aan om de thread-id van de werkrolthread op te halen.
DWORD GetThreadId() throw();
Retourwaarde
Retourneert de thread-id of NULL als de werkrolthread niet is geïnitialiseerd.
CWorkerThread::Initialize
Roep deze methode aan om de werkrolthread te initialiseren.
HRESULT Initialize() throw();
HRESULT Initialize(CWorkerThread<ThreadTraits>* pThread) throw();
Parameterwaarden
pThread
Een bestaande werkrolthread.
Retourwaarde
Retourneert S_OK bij succes of een fout HRESULT bij fout.
Opmerkingen
Deze methode moet worden aangeroepen om het object te initialiseren na het maken of na een aanroep naar CWorkerThread::Shutdown.
Als u twee of meer CWorkerThread objecten dezelfde werkthread wilt gebruiken, initialiseert u een van deze objecten zonder argumenten door te geven en geeft u een aanwijzer door aan dat object aan de Initialize methoden van de andere objecten. De objecten die zijn geïnitialiseerd met behulp van de aanwijzer, moeten worden afgesloten voordat het object wordt geïnitialiseerd.
Zie CWorkerThread::Shutdown voor informatie over hoe het gedrag van die methode verandert wanneer deze wordt geïnitialiseerd met behulp van een aanwijzer naar een bestaand object.
CWorkerThread::RemoveHandle
Roep deze methode aan om een ingang te verwijderen uit de lijst met wachtbare objecten.
HRESULT RemoveHandle(HANDLE hObject) throw();
Parameterwaarden
hObject
De greep die moet worden verwijderd.
Retourwaarde
Retourneert S_OK bij succes of een fout HRESULT bij fout.
Opmerkingen
Wanneer de ingang is verwijderd , wordt IWorkerThreadClient::CloseHandle aangeroepen op het bijbehorende object dat is doorgegeven aan AddHandle. Als deze aanroep mislukt, CWorkerThread roept u de Windows CloseHandle-functie aan in de ingang.
CWorkerThread::Afsluiten
Roep deze methode aan om de werkrolthread af te sluiten.
HRESULT Shutdown(DWORD dwWait = ATL_WORKER_THREAD_WAIT) throw();
Parameterwaarden
dwWait
De tijd in milliseconden om te wachten totdat de werkrolthread is afgesloten. ATL_WORKER_THREAD_WAIT is standaard ingesteld op 10 seconden. Indien nodig kunt u uw eigen waarde voor dit symbool definiëren voordat u atlutil.h opgeeft.
Retourwaarde
Retourneert S_OK over succes of een fout HRESULT bij fouten, bijvoorbeeld als de time-outwaarde, dwWait, wordt overschreden.
Opmerkingen
Als u het object opnieuw wilt gebruiken, roept u CWorkerThread::Initialize aan nadat u deze methode hebt aangeroepen.
Houd er rekening mee dat het aanroepen van Shutdown een object dat is geïnitialiseerd met een aanwijzer naar een ander CWorkerThread object, geen effect heeft en altijd S_OK retourneert.
Zie ook
DefaultThreadTraits
Klassen
Multithreading: Werkdraden maken
IWorkerThreadClient Interface