Programm "schlafen" legen
-
Hallo !
ich habe gerade ein Problem das man auf folgenden Nenner bringen kann:
Eine Schleife soll alle 10 sekunden durchlaufen werden - nuter umständen auch stundenlang.
Es soll aber immer möglich sein während des Betriebes das Programm auf der Stelle zu stoppen.Wenn ich jetzt mit Sleep(i) arbeite, friert ja sozusagen alles ein und ich kann keine Eingaben mehr machen.
Gibt es eine Möglichkeit trotz allem z.B. noch einen Buttonklick oder ein Variablen-Setzen (zur Abfrage im Schleifenkopf) zuzulassen ??Bin für jede Antwort dankbar !
liebe Grüße
Georg
-
Nimm die Arbeit und pack sie in einen eigenen Thread, dort kannst dann sleep verwenden, der Hautpthread bearbeitet dann die Windowsmessages
Falls es nicht windows sein sollte, gilt dann das gleiche. Der Haupthread wartet dann auf dein Abbruchsignal
-
Man könnte den Parameter für Sleep klein genug wählen, damit fast sofort auf das klicken
des Buttons reagiert werden kann.for(int i = 0; i < 100; ++i) //100 Durchläufe * 100 ms = 10 sec { sleep(100); //prüfe ob etwas passiert und wenn ja dann stoppe Programm } // Hier kommt die Schleife die alle 10 sec durchlaufen werden soll
-
@C Newbie
Die Lösung ist gut (IMHO lange sleep´s sind Mi...), aber auch diese Lösung würde ich in einen eigenen thread packen.
-
Cool, ich wusste garnicht, dass der Standard sleep und threads vorsieht .
-
Da "Galdanochi" selber schon von sleep spricht, ist es wohl sinnvoll im Lösungsvorschläge anzubieten, auch wenn sie auf OS Funktionalitäten zugreifen.
-
-
ich les mir grad die SEHR ausführliche Erklärung bei henkessoft durch - damit kann ich garantiert was anfangen !!
danke nochmal !
lG
Georg
-
Nicht nur du