Compartir a través de


Uso de objetos temporizadores en espera

En el ejemplo siguiente se crea un temporizador que se señalará después de un retraso de 10 segundos. En primer lugar, el código usa la función CreateWaitableTimer para crear un objeto temporizador en espera. A continuación, usa la función SetWaitableTimer para establecer el temporizador. El código usa la función WaitForSingleObject para determinar cuándo se ha señalado el temporizador.

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

Uso de temporizadores en espera con una llamada a procedimiento asincrónica