Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Листинги / Листинги / 29-01-SetWaitableTimer

.cpp
Скачиваний:
5
Добавлен:
24.03.2016
Размер:
1.54 Кб
Скачать
#define _WIN32_WINNT 0x0400

#include <windows.h>
#include <iostream.h>

#define _SECOND 10000000   // одна секунда для ожидающего таймера

HANDLE  hTimer;    // ожидающий таймер

DWORD WINAPI thread(LPVOID)
{
  // ждем сигнал от ожидающего таймера
  WaitForSingleObject(hTimer, INFINITE);
  // выводим сообщение
  cout << "\aThe timer is signaled." << endl;

  return 0;
}

int main()
{
  HANDLE  hThread;
  DWORD  IDThread;

  _int64  qwTimeInterval;    // время задержки для таймера

  // создаем ожидающий таймер
  hTimer = CreateWaitableTimer(NULL, FALSE, NULL);
  if (hTimer == NULL)
    return GetLastError();

  // время задержки для таймера = 3 секунды
  qwTimeInterval = -3 * _SECOND;

  // инициализируем таймер
  if (!SetWaitableTimer(
    hTimer,  // дескриптор таймера
    (LARGE_INTEGER*)&qwTimeInterval,   // временной интервал
    0,       // не периодический таймер
    NULL,    // процедуры завершения нет
    NULL,    // параметров к этой процедуре нет
    FALSE    // режим сбережения энергии не устанавливать
    ))
  {
    cout << "Set waitable timer failed." << endl
      << "The last error code: " << GetLastError() << endl;

    return 0;
  }

  // запускаем поток
  hThread = CreateThread(NULL, 0, thread, NULL, 0, &IDThread);
  if (hThread == NULL)
    return GetLastError();

  // ждем, пока поток закончит работу
  WaitForSingleObject(hThread, INFINITE);
  // закрываем дескрипторы
  CloseHandle(hThread);
  CloseHandle(hTimer);

  return 0;
}
Соседние файлы в папке Листинги