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.
In dit onderwerp wordt beschreven hoe u timers maakt, identificeert, instelt en verwijdert. Een toepassing gebruikt een timer om een gebeurtenis voor een venster te plannen nadat een opgegeven tijd is verstreken. Telkens wanneer het opgegeven interval (of time-outwaarde) voor een timer is verstreken, meldt het systeem het venster dat aan de timer is gekoppeld. Omdat de nauwkeurigheid van een timer afhankelijk is van de snelheid van de systeemklok en hoe vaak de toepassing berichten ophaalt uit de berichtenwachtrij, is de time-outwaarde alleen bij benadering.
Dit onderwerp bevat de volgende secties.
Timerbewerkingen
Toepassingen maken timers met behulp van de functie SetTimer. Een nieuwe timer begint het interval te timen zodra deze is gemaakt. Een toepassing kan de time-outwaarde van een timer wijzigen met behulp van SetTimer- en kan een timer vernietigen met behulp van de KillTimer--functie. Als u systeembronnen efficiƫnt wilt gebruiken, moeten toepassingen timers vernietigen die niet meer nodig zijn.
Elke timer heeft een unieke id. Wanneer u een timer maakt, kan een toepassing een id opgeven of het systeem een unieke waarde laten maken. De eerste parameter van een WM_TIMER bericht bevat de id van de timer die het bericht heeft gepost.
Als u een venstergreep opgeeft in de aanroep naar SetTimer, koppelt de toepassing de timer aan dat venster. Wanneer de time-outwaarde voor de timer is verstreken, plaatst het systeem een WM_TIMER bericht in het venster dat aan de timer is gekoppeld. Als er geen venstergreep is opgegeven in de aanroep naar SetTimer-, moet de toepassing die de timer heeft gemaakt, de berichtenwachtrij voor WM_TIMER berichten controleren en naar het juiste venster verzenden.
Notitie
Als u de optionele TIMERPROC callback-functie opgeeft, wordt de functie aangeroepen tijdens de berichtlus en wordt WM_TIMER niet verzonden naar de WNDPROC- callback.
Als u een melding moet ontvangen wanneer een timer is verstreken, gebruikt u een wachttijdtimer. Zie Wachtbare timerobjectenvoor meer informatie.
Timer met hoge resolutie
Een teller is een algemene term die wordt gebruikt bij het programmeren om te verwijzen naar een incrementele variabele. Sommige systemen bevatten een prestatiemeter met hoge resolutie die de verstreken tijd met hoge resolutie meet.
Als er een prestatiemeteritem met hoge resolutie bestaat op het systeem, kunt u de functie QueryPerformanceFrequency gebruiken om de frequentie uit te drukken, in aantallen per seconde. De waarde van het aantal is afhankelijk van de processor. Op sommige processors kan het aantal bijvoorbeeld de cyclussnelheid van de processorklok zijn.
De functie QueryPerformanceCounter haalt de huidige waarde van het prestatiemeteritem met hoge resolutie op. Door deze functie aan te roepen aan het begin en einde van een codesectie, gebruikt een toepassing in wezen de teller als timer met een hoge resolutie. Stel dat QueryPerformanceFrequency aangeeft dat de frequentie van de prestatiemeteritem met hoge resolutie 50.000 aantallen per seconde is. Als de toepassing QueryPerformanceCounter aanroept vlak voor en direct na de codesectie die moet worden getimed, zijn de tellerwaarden respectievelijk 1500 eenheden en 3500 eenheden. Deze waarden geven aan dat .04 seconden (2000 tellingen) zijn verstreken terwijl de code werd uitgevoerd.
Wachtbare timerobjecten
Een wachtbaar timerobject is een synchronisatieobject waarvan de status wordt ingesteld op gesignaleerd wanneer de opgegeven tijd is verstreken. Er zijn twee soorten wachtbare timers die kunnen worden gemaakt: handmatig opnieuw instellen en synchroniseren. Een timer van beide typen kan ook een periodieke timer zijn.
Een thread maakt gebruik van de functie CreateWaitableTimer of CreateWaitableTimerEx functie om een timerobject te maken. De thread die wordt gemaakt, geeft aan of de timer een timer voor handmatig opnieuw instellen of een synchronisatietimer is. De thread die wordt gemaakt, kan een naam voor het timerobject opgeven. Threads in andere processen kunnen een ingang openen voor een bestaande timer door de naam ervan op te geven in een aanroep naar de OpenWaitableTimer-functie. Elke thread met een ingang naar een timerobject kan een van de wachtfuncties gebruiken om te wachten totdat de timerstatus is ingesteld op gesignaleerd.
Zie Waitable Timer Objectsvoor meer informatie over het gebruik van wachtbare timerobjecten voor threadsynchronisatie.