2016-07-07 6 views
0

Hallo Wenn meine Anwendung eine Funktion, die ich laden starten - ruft eine Funktion, den Name ist CreateFileNow() {}GetTickCount Verwendung für „Schleife“

Ich mag eine Schleife machen, aber ich weiß nicht, wie. Ich möchte alle 15 Sekunden Daten schreiben. Also rufe ich die Funktion beim Programmstart auf, schreibe Daten in die Datei, warte dann 15 sec und schreibe wieder Daten in die Datei.

FILE* file; 

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

    fprintf(file, "Test"); 

    fclose(file); 

Wie kann ich eine Schleife machen, die diesen Codeteil alle 15 Sekunden ausführt? Ich möchte nicht While und Sleep verwenden, kann jemand helfen, es mit GetTickcount() ;?

+2

Welche Programmiersprache benutzen Sie, von den beiden, die Sie markiert haben? –

+0

Entschuldigung, ich habe den anderen nicht entfernt. – Vbnetguy

Antwort

0

Mit der Verwendung von fopen_s gehe ich davon aus, dass Sie Visual Studio verwenden. So können Sie die Sleep Funktion verwenden können:

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

'fopen_s' ist optional Standard: http://port70.net/~nsz/c/c11/n1570.html#K.3.5.2.1 – Olaf

+0

Schlaf ist nicht gut für mich, denn wenn es nicht funktioniert, funktioniert die App nicht richtig . Es ist ein Spielclient, also kann ich es nicht schlafen. Ich muss es mit dem Tick Coint arbeiten lassen, ich muss den Tickcount setzen, wenn der Client in einer Variablen startet, dann überprüfe, ob der Tickcount größer ist als der Variablenwert, if ja schreibe in die Datei, sonst setze das neue tickcount in die Variable und beginne von vorne, ich weiß einfach nicht wie ich es machen soll. – Vbnetguy

0

Erstellen Sie eine separate thread, die für Sie nicht Timing-Teil. Der Thread beeinträchtigt nicht Ihr Hauptprogramm. Die globale Variable wird alle 15 Sekunden aktualisiert und löst den Wert main thread aus, um Werte in Datei zu aktualisieren.

#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

Es funktioniert nicht. Wenn ich dies mache, öffnet sich meine Anwendung nicht. Ich rufe die CreateFileNow() {} -Funktion an, wenn die App startet und dann will ich sie alle 15 Sek. Aufrufen. Mit dem Sleep wird nur geschlafen und nicht geöffnet. Deshalb habe ich gebeten, es mit GetTickCount() zu arbeiten. Während ist nicht gut für mich. – Vbnetguy

Verwandte Themen