[Mini-GUIDE] Multi Tasking in Au3, mehrere schelifen parallel laufen lassen

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [Mini-GUIDE] Multi Tasking in Au3, mehrere schelifen parallel laufen lassen

      hey,
      ich zeug euch jetzt ma wie ihr in AutoIT mehrere Schleifen parallel neben einander laufen lassen könnt, also ohne das ers eine ausgefürht wird und dann die andere.
      Das nennt man "Tasking"
      Ihr werded nur 5 min brauchen und scho seit ihr schlauer ;)


      Die Funktion dazu ist schon in AutoITv3 integriert.

      Quellcode

      1. $counter1= 0
      2. $counter2 = 0
      3. $counter3 = 0
      4. GuiCreate("Multi Tasking",150,100)
      5. $Zeit_1 = GuiCtrlCreateLabel("0",10,5,100,20)
      6. $Zeit_2 = GuiCtrlCreateLabel("0",10,35,100,20)
      7. $Zeit_3 = GuiCtrlCreateLabel("0",10,65,100,20)
      8. AdlibEnable("_counter1",1) ; nonstop durch (jede ms)
      9. AdlibEnable("_counter2",1000) ; in 1sec abschnitten (alle 1000ms)
      10. AdlibEnable("_counter3",60000) ; in 1min abschnitten (jede min)
      11. do
      12. $msg = GuiGetMsg()
      13. until $msg = -3
      14. ; "-3" wird zurückgegeben wenn jemand das Fenster schließen möchte
      15. func _counter1()
      16. $counter1= $counter1+ 1
      17. GuictrlSetData($Zeit_1,$counter1)
      18. endfunc
      19. func _counter2()
      20. $counter2= $counter2+ 1
      21. GuictrlSetData($Zeit_1,$counter2)
      22. endfunc
      23. func _counter3()
      24. $counter3 = $counter3 + 1
      25. GuictrlSetData($Zeit_1,$counter3)
      26. endfunc
      Alles anzeigen
      Erst ausführen/testen und dann source gründlich durchlesen!

      Wer beides gemacht hat, der müsste jetzt bemerkt haben, dass alle 3 parallel laufen.
      Und das noch in verschiedenen Zeitabschnitten.

      Um diese schleife zu beenden kann man einfach

      Quellcode

      1. AdlibDisable()
      benutzen dann werden die schleifen gestoppt.

      Also AdlibEnable(Func (als String), ZeitAbschnitt)

      Der Zeitabschnitt ist optional, also er muss net sein.
      Der standart wert dafür welcher dann auch benutzt wird wenn kein wert angegeben wurde ist "1000".

      ICh hofe es ist verständlich

      Kritik erwünscht.

      EDIT : kleiner fehler behoben, danke an fuyu

      gez :: *electriZer*
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • @fuyo
      xD
      sry ich hatte das ja aber ich schreib die bb-codes imer selbst hin ^^ (geht schneller)
      hab halt bei einem "[CODE]" das "/" vergessn ^^
      danke für den hinweis =)

      @internetfreak
      jo das hat ne gewaltige macht x)
      ich werd jetzt ma TuT's über sachne machen die, die meisten gar net kennen oder gar net beachten obwohl sie extrem was nützen =D

      gez : *electriZer*
    • @ Just_Pein
      Änder doch vllt mal
      $zähler1 = 0
      $zähler2 = 0
      $zähler3 = 0

      in
      $z[COLOR="Red"]ae[/COLOR]hler1 = 0
      $z[COLOR="Red"]ae[/COLOR]hler2 = 0
      $z[COLOR="Red"]ae[/COLOR]hler3 = 0

      bei mir kam auch am Anfang ein Error

      Ich glaub du musst dan auch noch das anpassen
      AdlibEnable("_z[COLOR="Red"]ae[/COLOR]hler1",1) ; nonstop durch (jede ms)
      AdlibEnable("_z[COLOR="Red"]ae[/COLOR]hler2",1000) ; in 1sec abschnitten (alle 1000ms)
      AdlibEnable("_z[COLOR="Red"]ae[/COLOR]hler3",60000) ; in 1min abschnitten (jede min)

      bin mir aber nicht sicher , teste es^^

      musst dan natürlich bei den Functionen auch anpassen :
      func _z[COLOR="Red"]ae[/COLOR]hler1()
      $z[COLOR="Red"]ae[/COLOR]hler1 = $z[COLOR="Red"]ae[/COLOR]hler1 + 1
      GuictrlSetData($Zeit_1,$z[COLOR="Red"]ae[/COLOR]hler1)
      endfunc

      func _z[COLOR="Red"]ae[/COLOR]hler2()
      $z[COLOR="Red"]ae[/COLOR]hler2 = $z[COLOR="Red"]ae[/COLOR]hler2 + 1
      GuictrlSetData($Zeit_1,$z[COLOR="Red"]ae[/COLOR]hler2)
      endfunc

      func _z[COLOR="Red"]ae[/COLOR]hler3()
      $[COLOR="Red"]ae[/COLOR]ähler3 = $z[COLOR="Red"]ae[/COLOR]hler3 + 1
      GuictrlSetData($Zeit_1,$z[COLOR="Red"]ae[/COLOR]hler2)
      endfunc