Schleife per Mausklick/Tastendruck beenden - Prozessorlast begrenzen

  • Hallo zusammen,

    es ist schon ein bißchen her, daß ich mich ausfürlich mit dem Programmieren/Scripten auseinandergesetzt habe.

    Wie kann ich eine Schleife, mir fällt da als erstes "do until" ein, mit Hilfe eines Tastendrucks oder mit Hilfe eines Mausklicks, Dialogfelder habe ich schon erstellt bekommen, beenden? Den Prozess killen ist nicht elegant und inefektiv, da die Ergebnisse auch gelöscht werden.

    Wie kann ich bei länger laufenden Scripten verhindern, daß die CPU-Last auf 100% steigt?
    Beim Testen kam ich ich leider nicht drum herum mich ein paar mal abmelden zu müssen um den Rechner wieder zum laufen zu bringen.
    Hilft mir dabei der Befehl Sleep(X)


    Danke für Eure Unterstützung

    C

    Einmal editiert, zuletzt von Pebbels (20. Juni 2012 um 13:02)

  • Also erstmal muss ich auch dir leider sagen, dass meine Glaskugel noch immer in Reparatur ist, weshalb ich und auch die Anderen hier im Forum dir wohl so nicht helfen können. Was lernen wir daraus? Genau einfach mal das eigene Script posten, dann wird auch geholfen... ;)
    Da ich dein Script ja nicht kenne kann ich jetzt nichts genaueres sagen, aber ich vermute du hast eine Endlos-Schleifen, die die CPU-Auslastung in die Höhe treibt. Bau doch einfach mal ein

    [autoit]

    Sleep(500)

    [/autoit]

    in die Schleife ein...

    LG
    Christoph :)

  • Das kommt immer darauf an was deine Schleife macht.
    Angenommen du lässt ein Bitmap durchnudeln (jeden Pixel). Dann reicht alle 100px ein Sleep(10) um die Auslastung stark zu reduzieren.
    Läuft deine Schleife aber in mittlerer Geschwindigkeit ist ein Sleep(10)/Sleep(20) meistens ausreichend.
    Bei Schleifen wo es nicht aufs Tempo ankommt (z.B. eine Uhr/Wetteranzeige/EmailCheck) kann man den Prozess für eine Weile schlafen legen.

  • Hallo zusammen,

    vielen Dank für eure Unterstützung.

    Nachdem ich eine Woche verzweifelt gesucht hatte, habe nachdem ich den Post veröffentlicht hatte ich eine Lösung für mich gefunden.


    Den Start der Aktion habe ich mit

    [autoit]

    if _ispressed("78", $hDLL) Then ; wenn die Taste 'F9' gedrückt wird

    [/autoit]

    realisiert.

    Die Schleife habe ich mit

    [autoit]

    until _IsPressed("1B", $hDLL) ; bis die Taste 'ESC' gedrückt wird

    [/autoit]

    beendet.

    Den Prozess habe ich ebenfalls so beendet.


    Danke noch mal.


    C