Возможный дубликат:
Могу ли я использовать SetTimer () API в консольном приложении c ++
Я ищу, чтобы создать таймер в C ++, в консольном приложении Win32. Я Google и найти большинство результатов для SetTimer (), но в качестве примера используется для управления окном или других.
Мне нужен мой таймер, чтобы начать отсчет, сразу после запуска таймера я вызываю функцию, а после окончания таймера я вызываю другую функцию. Я буду использовать потоки.
Я новичок в C ++, так что это может быть сделано с помощью функции SetTimer?
Благодарю .
Это не твой путь, SetTimer
основан на системе сообщений Windows и не будет работать в консольном приложении только из коробки. Вам нужно будет создать цикл прокачки сообщений вручную и сделать несколько других сотрудников, которые вряд ли знакомы со структурой консольного приложения и потоком управления.
Вы могли бы наслаждаться Объекты Waitable Timers вместо. Они разработаны специально для использования с потоками в качестве объектов синхронизации.
Пример использования:
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <stdio.h>
int main()
{
HANDLE hTimer = NULL;
LARGE_INTEGER liDueTime;
liDueTime.QuadPart=-100000000;
// Create a waitable timer.
hTimer = CreateWaitableTimer(NULL, TRUE, "WaitableTimer");
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;
}
Смотрите также хорошую статью о таймерах Windows: http://www.codeproject.com/Articles/1236/Timers-Tutorial
Других решений пока нет …