1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Countdown im Hintergrund

Dieses Thema im Forum "Support & Discussion" wurde erstellt von Obstcoder, 22. Oktober 2017.

Schlagworte:
  1. Obstcoder

    Obstcoder New Member

    Registriert seit:
    11. Oktober 2017
    Beiträge:
    11
    Zustimmungen:
    5
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Ich hab mal wieder ein Problem :D
    Ich habe ein Programm, das die ganze Zeit in einer Schleife läuft: (vereinfacht...)
    Code (AutoIt):

    AdlibRegister("Reset", 600000) <- Lösung

    Func Reset()
       If $i = 10 Then
       sleep(500)
       $i = 0
       Image()
       Else
       $i = $i + 1
       Start()
       EndIf
    EndFunc

    Func Start()
       Reset()
    EndFunc

    Func Image()
       Reset()
    EndFunc
     
    Wie kann ich hierbei einbauen, dass im Hintergrund ein Countdown läuft, der alle 10 min die Funktion "Reset()" erzwingt?
    So könnte man, wenn sich das Programm aufhängt (aus welchem Grund auch immer), das Programm wieder zum laufen bekommen.

    Lösung:
    AdlibRegister("Reset", 600000)


     
    Zuletzt bearbeitet: 23. Oktober 2017
  2. Best Answer:
    Post #3 by NongeII, 23. Oktober 2017 (3 points)
  3. Pentox

    Pentox New Member

    Registriert seit:
    4. Juli 2017
    Beiträge:
    24
    Zustimmungen:
    6
    Punkte für Erfolge:
    3
    uhm. kp wie es in autoIT funktioniert. gibts aber keinen timer? https://www.autoitscript.com/autoit3/docs/functions/TimerInit.htm (kp ob das hier funktioniert. wie gesagt kein plan von autoIT)

    in c# hätte ich sehr warscheinlich ne while schleife gemacht. den befehl ausgeführt. und dann die schleife 10 000ms schlafen lassen.
    ca so:
    Code (Text):
    while(true)
    {
          reset();
          sleep(10000);
    }
     
    Obstcoder gefällt das.
  4. NongeII

    NongeII New Member

    Registriert seit:
    15. September 2017
    Beiträge:
    4
    Zustimmungen:
    2
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Best Answer
    Google mal nach Autoit adlibregister und schau die dazu die Help an.
    Da AutoIt aber nur eine " Noop-Sprache " ist, kannst du generell mit der Selben exe keinen " neustart " erzwingen...
    An deiner Stelle würde ich es per 2. Exe machen, die dann einfach per adlibregister alle x ms die Haut.exe schließt und neu Startet.
    Funktionial kannst du diese 2.exe per Call mit Parameter aufrufen lassen, in den Parametern dann deine Ms die du haben willst.
    Dies ist der (meines wissens) einzige Weg MultiThearding in AutoIt zu ermöglichen.
    Ich benutze diese Art zb für ein Onlinebot wo ich mehrere Sachen gleichzeitig machen muss, da dies in einer einzigen exe zu laggs führt, habe ich sie gesplittet und in verschiedenen Exen unterteilt, nicht die feinste - aber die einfachste Lösung.

    lg
     
    Obstcoder gefällt das.
  5. Bobo2040

    Bobo2040 New Member

    Registriert seit:
    30. September 2017
    Beiträge:
    1
    Zustimmungen:
    1
    Punkte für Erfolge:
    3
    Habe ich es richtig verstanden, das du beim "Reset" nicht das Programm an sich neustarten möchtest, sondern nur die Variablen zurücksetzten willst?

    Dann brauchst du einfach nur einen Timer, der nach ablauf deine Reset Funktion aufruft.

    Vom Theoretischen her, wäre der Aufbau so:

    Code (Text):
    machPause = 10min;
    initTimer = time();
    While(Spielen) {
      if((time() - initTimer) > machPause) {
        machWeiter();
      }else{
         reset();
         initTimer = time();
      }
    }
     
    Ich kenne mich mit AutoIt nicht wirklich aus, die Spezifischen Funktionsnamen, solltest du aber sehr leicht im Internet finden können.
    Hier zum Beispiel: https://www.autoitscript.com/forum/topic/81919-setting-up-a-timer/
     
    Obstcoder gefällt das.
  6. Obstcoder

    Obstcoder New Member

    Registriert seit:
    11. Oktober 2017
    Beiträge:
    11
    Zustimmungen:
    5
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Ich hatte gehofft, man könnte mein Problem so wie bei Bobo2040 lösen. Doch genau das war der Grund zu meinem Post, denn wenn hier einfach das Programm an irgend einer Stelle hängt, kommt es schlicht nicht mehr zur time() abfrage und startet so nicht neu. Deshalb hatte ich gehofft, es würde in AutoIt vielleicht eine Möglichkeit geben, um etwas dauerhaft im Hintergrund laufen zu lassen.

    Ich schaue mir jetzt die Lösung von Nongell an und melde mich, falls ich noch Probleme habe.
    Vielen Dank schon mal für die Lösungsvorschläge :)
     
  7. Obstcoder

    Obstcoder New Member

    Registriert seit:
    11. Oktober 2017
    Beiträge:
    11
    Zustimmungen:
    5
    Punkte für Erfolge:
    3
    Geschlecht:
    männlich
    Vielen Dank Nongell, hat super geklappt :) hab zwar Adlibregister am Anfang an die Falsche Stelle gepackt, aber jetzt klappts :D
    Den ersten Bot erfolgreich fertig Programmiert und durch eure Hilfe auch noch dauerhaft funktionstüchtig gemacht :D
     
    NongeII gefällt das.

Diese Seite empfehlen

Die Seite wird geladen...