我制作了一个简单的网络监控系统,我希望它每隔一小时运行一次,以便持续跟踪客户端系统。任何人都可以告诉我如何让我的代码每隔一小时后执行一次。
编辑:
我的平台是windows-7,我正在使用Visual Studio 2010。
答案 0 :(得分:1)
在Linux上,尝试cron
个工作。这会安排程序定期运行。
答案 1 :(得分:1)
Windows任务计划程序的API文档为here。它不是最简单的API,命令行工具schtasks.exe可能是一个更简单的解决方案。
答案 2 :(得分:0)
查看Waitable Timer Objects和Using Waitable Timer Objects,深入了解合适的计时器API。 SetWaitableTimer function允许将句点设置为3,600,000 ms,表示所需的 1小时期间。
示例:强>
#include <windows.h>
#include <stdio.h>
int main()
{
HANDLE hTimer = NULL;
LARGE_INTEGER liDueTime;
liDueTime.QuadPart = -100000000LL;
// due time for the timer, negative means relative, in 100 ns units.
// This value will cause the timer to fire 10 seconds after setting for the first time.
LONG lPeriod = 3600000L;
// one hour period
// Create an unnamed waitable timer.
hTimer = CreateWaitableTimer(NULL, TRUE, NULL);
if (NULL == hTimer)
{
printf("CreateWaitableTimer failed, error=%d\n", GetLastError());
return 1;
}
printf("Waiting for 10 seconds...\n"); // as described with liDueTime.QuadPart
if (!SetWaitableTimer(hTimer, &liDueTime, lPeriod , NULL, NULL, 0))
{
printf("SetWaitableTimer failed, error=%d\n", GetLastError());
return 2;
}
// and wait for the periodic timer event...
while (WaitForSingleObject(hTimer, INFINITE) == WAIT_OBJECT_0) {
printf("Timer was signaled.\n");
// do what you want to do every hour here...
}
printf("WaitForSingleObject failed, error=%d\n", GetLastError());
return 3;
}