Bagikan melalui


Menggunakan Objek Timer yang Dapat Ditunda

Contoh berikut membuat timer yang akan diberi sinyal setelah penundaan 10 detik. Pertama, kode menggunakan fungsi CreateWaitableTimer untuk membuat objek timer yang dapat ditunggu. Kemudian menggunakan fungsi SetWaitableTimer untuk mengatur timer. Kode menggunakan fungsi WaitForSingleObject untuk menentukan kapan timer telah diberi sinyal.

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

Menggunakan Timer yang Dapat Ditunda dengan Panggilan Prosedur Asinkron