2013-11-15 196 views
0

我做了一個簡單的網絡監控系統,我希望它在每個小時後運行以保持客戶端系統的連續跟蹤。任何人都可以告訴我如何讓我的代碼在每一小時後執行。在特定時間後執行代碼

編輯:

我的平臺是Windows-7和我使用Visual Studio 2010中

+1

正如你現在已經注意到了,當你問半個問題,你得到的是不恰當的答案。如果您正在使用Windows,請這麼說 - 您將以這種方式得到不同的答案,這比Windows更適合Windows。 –

回答

1

在Linux上,嘗試cron工作。這安排程序定期運行。

http://www.unixgeeks.org/security/newbie/unix/cron-1.html

+0

感謝您的建議,但值得尊重的是,我正在使用Visual Studio 2010開發windows-7 ... –

+0

當然,有些[Windows模擬](http://stackoverflow.com/questions/638124/cron-like - windows系統)轉換爲'cron'。 – Duck

+0

通過搜索類似於** cron **的程序,我找到了[At](http://ss64.com/nt/at.html)以及** cronw ** ..(它不適用於較新版本的windows).. –

1

爲Windows任務調度程序中的API文檔here。這不是最簡單的API,命令行工具schtasks.exe可能是一個更簡單的解決方案。

0

調查Waitable Timer ObjectsUsing Waitable Timer Objects以洞察合適的計時器API。 SetWaitableTimer function允許將期間設置爲3,600,000毫秒,其表示期望的一小時期間。

例子:

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