2016-07-07 87 views
0

嗨當​​我的應用程序開始我打開一個功能 - 調用一個函數,它的名字是CreateFileNow(){}使用的GetTickCount for「循環」

我想打一個循環,但我不知道怎麼辦。我想每15秒寫入一次數據。所以我在應用程序啓動時將函數調用到文件中,而不是等待15秒,然後再將數據寫入文件。

FILE* file; 

    if (fopen_s(&file, "Accesslog.txt", "w") != 0) 
    { 
     return; 
    } 

    fprintf(file, "Test"); 

    fclose(file); 

我該如何做一個循環,每15秒運行一次這段代碼? 我不想使用While和Sleep,有人可以幫助使用GetTickcount();?

+2

您正在使用哪種編程語言? –

+0

對不起,我沒有刪除另一個。 – Vbnetguy

回答

0

通過使用fopen_s我假設你正在使用Visual Studio。所以,你可以使用Sleep功能:

while(/* some condition */) { 
    Sleep(15000); 
    fprintf(file, "Test"); 
} 
+0

'fopen_s'是可選的標準:http://port70.net/~nsz/c/c11/n1570.html#K.3.5.2.1 – Olaf

+0

睡眠對我來說並不好,因爲如果它睡覺了應用程序它不能正常工作。它是一個遊戲客戶端,所以我無法入睡。我需要通過使用Tick coint使其工作,我需要在客戶端在變量中啓動時輸入tickcount,而不是檢查tickcount是否大於變量值if是寫入文件,否則將新的tickcount設置爲變量,並從頭開始,我只是不知道如何做到這一點。 – Vbnetguy

0

創建一個單獨的thread,它爲你計時部。該線程不會干擾您的主程序。全局變量每15秒更新一次並觸發main thread將值更新到文件中。

#include <pthread.h> 

int update_file = 0; 

void *time_thread(void *arg) 
{ 
    while (1) { 
    sleep(15); 
    update_file = 1; 
    } 
} 
int main(void) 
{ 
    pthread_t tid; 
    pthread_create(&tid, NULL, &time_thread, NULL); 
    while (1) { 
    while (update_file == 0); 
    FILE *file; 
     if (fopen_s(&file, "Accesslog.txt", "w") != 0) { 
      return; 
     } 
    fprintf(file, "Test"); 
    fclose(file); 
    update_file = 0; 
    } 
    return 0; 
} 
+0

它不工作。如果我做這個我的應用程序不打開..當應用程序啓動時,我打電話給CreateFileNow(){}函數,並且我想每15秒調用它一次。睡眠只是睡眠,而不打開。這就是爲什麼我要求它使用GetTickCount();。雖然對我不好。 – Vbnetguy