Sleep

Wartet eine bestimmte Zeit, bevor die Ausführung fortgesetzt wird.

Sleep, Verzögerung

Parameter

Verzögerung

Die Wartezeit zwischen 0 und 2147483647 Millisekunden (24 Tage). Kann ein Ausdruck sein.

Bemerkungen

Durch die Granularität (Ungenauigkeit) der Zeiterfassung im Betriebssystem wird Verzögerung möglicherweise auf das nächstmögliche Vielfache von 10 oder 15.6 Millisekunden aufgerundet (abhängig vom Typ der installierten Hardware und Treiber). In den meisten Windows 2000/XP-Systemen ist eine Verzögerung von 1 bis 10 äquivalent zu 10 oder 15.6. Um eine kürzere Verzögerung zu erreichen, siehe Beispiele.

Die tatsächliche Verzögerung kann länger als erwartet ausfallen, wenn die CPU stark ausgelastet ist. Der Grund dafür ist, dass das Betriebssystem einen Teil der CPU-Zeit (in der Regel 20 Millisekunden) an jeden Prozess abgibt, der sie benötigt, bevor es dem Skript eine weitere Zeitscheibe übergibt.

Eine Verzögerung von 0 gibt den Rest der aktuellen Zeitscheibe des Skripts an alle anderen Prozesse ab, die sie benötigen (solange sie nicht eine wesentlich niedrigere Priorität als das Skript haben). Daher erzeugt eine Verzögerung von 0 in Wirklichkeit eine Verzögerung zwischen 0 und 20 ms (oder mehr), abhängig von der Anzahl der bedürftigen Prozesse (sind keine vorhanden, erfolgt überhaupt keine Verzögerung). Eine Verzögerung von 0 sollte jedoch immer damit enden, dass sie kürzer als jede andere längere Verzögerung ist.

Während des Sleeps können neue Threads via Hotkeys, benutzerdefinierte Menüpunkte oder Timer gestartet werden.

Sleep -1: Eine Verzögerung von -1 führt nicht zu einem Sleep, sondern veranlasst das Skript, sofort seine Meldungswarteschlange zu prüfen. Dies kann verwendet werden, um anstehende Unterbrechungen an einer bestimmten Stelle zu erzwingen, nicht an einer zufälligen Stelle. Weitere Informationen finden Sie unter Critical.

SetKeyDelay, SetMouseDelay, SetControlDelay, SetWinDelay, SetBatchLines

Beispiele

Wartet 1 Sekunde, bevor die Ausführung fortgesetzt wird.

Sleep 1000

Wartet 30 Minuten, bevor die Ausführung fortgesetzt wird.

MeineVar := 30 * 60000 ; 30 bedeutet Minuten und mal 60000 ergibt die Zeit in Millisekunden.
Sleep MeineVar ; Wartet für 30 Minuten.

Zeigt, wie ein Sleep kürzer als die üblichen 10 oder 15.6 Millisekunden erzeugt werden kann. Hinweis: Während ein Skript dieser Art läuft, werden das gesamte Betriebssystem und alle Anwendungen von timeBeginPeriod beeinflusst.

SetBatchLines -1  ; Ermöglicht maximale Effektivität dieser Methode.

SleepDauer := 1  ; Muss manchmal nachjustiert werden (z.B. ist 2 anders als 3), abhängig vom unteren Wert.
ZeitPeriode := 3 ; Probieren Sie 7 oder 3 aus. Siehe Kommentar unten.
; Sie können auf einem PC, wo die Sleep-Dauer normalerweise auf 15.6 ms aufgerundet wird, ZeitPeriode:=7 ausprobieren,
; um kürzere Sleeps zu ermöglichen, und ZeitPeriode:=3 oder weniger, um die kürzesten Sleeps zu ermöglichen.

DllCall("Winmm\timeBeginPeriod", "UInt", ZeitPeriode)  ; Beeinflusst alle Anwendungen, nicht nur das DllCall("Sleep"...) des Skripts, aber nicht SetTimer.
Iterationen := 50
StartZeit := A_TickCount

Loop %Iterationen%
    DllCall("Sleep", "UInt", SleepDauer)  ; DllCall muss anstelle des Sleep-Befehls verwendet werden.

DllCall("Winmm\timeEndPeriod", "UInt", ZeitPeriode)  ; Sollte aufgerufen werden, um das System wieder zu normalisieren.
MsgBox % "Sleep-Dauer = " . (A_TickCount - StartZeit) / Iterationen