Sleep Funktion funktioniert nicht so ganz



  • Hallo leute,

    ich möchte eine Funktion in C++ "einschläfern" für 10 min. Threads oder while-Schleifen möchte ich nicht gern benutzen.

    Habe es mit Sleep() versucht, leider funktioniert das nicht. Kann mir jemand vielleicht mal ein kurzes Bespiel zu zeigen.

    Google: Keine eleganten Lösungen 🙂



  • Bitte, ein Beispiel:

    Sleep(10*1000*60);
    

    Hilft dir das Beispiel weiter? Vermutlich nicht, oder? Daher: bitte beschreibe doch mal ganz genau, was du machen möchtest. Ein Single-Thread-Programm einfach so für 10 Minuten anzuhalten, hört sich erst mal wenig sinnvoll an. Was genau bezweckst du? Wenn du uns das verrätst, können wir eventuell ein bisschen sinnvoller helfen. 🙂



  • user12434 schrieb:

    Habe es mit Sleep() versucht, leider funktioniert das nicht.

    Weißt du, in welcher Einheit das Argument von Sleep erwartet wird?



  • Meinst du überhaupt die WinAPI-Funktion Sleep()? Falls ja, schau hier mal rein:

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms686298(v=vs.85).aspx



  • Hier wäre wohl ein Timer angebrachter, denn du musst ja die Message Pump weiter laufen lassen (im Fall von WinAPI), ansonsten reagiert dir das Programm nicht.
    Auch ein Konsolenprogramm würde wohl verursachen dass Windows sagt "Das Programm reagiert nicht mehr".



  • Scorcher24 schrieb:

    Hier wäre wohl ein Timer angebrachter, denn du musst ja die Message Pump weiter laufen lassen (im Fall von WinAPI), ansonsten reagiert dir das Programm nicht.

    Nur wenn's ein eigenes Fenster ist.

    Scorcher24 schrieb:

    Auch ein Konsolenprogramm würde wohl verursachen dass Windows sagt "Das Programm reagiert nicht mehr".

    Nö. Das Fenster blockiert doch auch nicht, nur weil du eine lange Berechnung durchführst. 😉



  • Sleep() rechnet innerhalb der Klammern in Milisekunden.
    10 min = 10 * 60 s = 600 s
    1 s = 1000 ms, also 10 min = 600000 ms

    Deine Funktion muss so geschrieben werdenn: Sleep(600000);



  • amichian schrieb:

    Sleep() rechnet innerhalb der Klammern in Milisekunden.
    10 min = 10 * 60 s = 600 s
    1 s = 1000 ms, also 10 min = 600000 ms

    Deine Funktion muss so geschrieben werdenn: Sleep(600000);

    Schreib es lieber so, wie ich gepostet habe (einzeln). Dann lässt sich auch leichter erkenne, wie lange denn jetzt gewartet wird.


Anmelden zum Antworten