Utilisation d’objets minuteur d’attente

L’exemple suivant crée un minuteur qui est signalé après un délai de 10 secondes. Tout d’abord, le code utilise la fonction CreateWaitableTimer pour créer un objet minuteur d’attente. Ensuite, il utilise la fonction SetWaitableTimer pour régler le minuteur. Le code utilise la fonction WaitForSingleObject pour déterminer quand le minuteur a été signalé.

#include <windows.h>
#include <stdio.h>

int main()
{
    HANDLE hTimer = NULL;
    LARGE_INTEGER liDueTime;

    liDueTime.QuadPart = -100000000LL;

    // Create an unnamed waitable timer.
    hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
    if (NULL == hTimer)
    {
        printf("CreateWaitableTimer failed (%d)\n", GetLastError());
        return 1;
    }

    printf("Waiting for 10 seconds...\n");

    // Set a timer to wait for 10 seconds.
    if (!SetWaitableTimer(hTimer, &liDueTime, 0, NULL, NULL, 0))
    {
        printf("SetWaitableTimer failed (%d)\n", GetLastError());
        return 2;
    }

    // Wait for the timer.

    if (WaitForSingleObject(hTimer, INFINITE) != WAIT_OBJECT_0)
        printf("WaitForSingleObject failed (%d)\n", GetLastError());
    else printf("Timer was signaled.\n");

    return 0;
}

Utilisation de minuteurs d’attente avec un appel de procédure asynchrone