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), das ein Ausdruck sein kann.

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). Auf 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 dauern als erwartet, wenn die CPU unter hoher Last ist. Das liegt daran, dass das Betriebssystem jedem bedürftigen Prozess einen Teil der CPU-Zeit übergibt (in der Regel 20 Millisekunden), bevor das Skript eine weitere Zeitscheibe erhält.

Eine Verzögerung von 0 übergibt den Rest der Skript-Zeitscheibe je nach Bedarf an andere Prozesse (solange diese nicht eine deutlich niedrigere Priorität haben als das Skript). Daher erzeugt eine Verzögerung von 0 eine tatsächliche Verzögerung von 0 bis 20 ms (oder mehr), abhängig von der Anzahl bedürftiger Prozesse (sind keine vorhanden, besteht überhaupt keine Verzögerung). Allerdings sollte eine Verzögerung von 0 immer damit enden, kürzer zu sein, als jede längere Verzögerung sein würde.

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

Sleep -1: Eine Verzögerung von -1 erzeugt kein Sleep, sondern ermöglicht dem Skript, seine Meldungswarteschlange sofort zu überprüfen. Dies kann genutzt werden, um ausstehende Unterbrechungen nicht zufällig, sondern gezielt an einer bestimmten Stelle stattfinden zu lassen. Siehe Critical für mehr Details.

Siehe auch

SetKeyDelay, SetMouseDelay, SetControlDelay, SetWinDelay, SetBatchLines

Beispiele

#1

Sleep, 1000  ; 1 Sekunde

#2: Das folgende Beispiel zeigt, wie ein Sleep kleiner als die üblichen 10 oder 15.6 Millisekunden erzeugt werden kann. HINWEIS: Während ein Skript dieser Art läuft, wird das ganze 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 unteren Kommentar.
; 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)  ; Wirkt sich auf alle Anwendungen aus, nicht nur auf das DllCall("Sleep"...) vom Skript, aber nicht auf SetTimer.
Iterationen := 50
StartZeit := A_TickCount

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

DllCall("Winmm\timeEndPeriod", "UInt", ZeitPeriode)  ; Sollte aufgerufen werden, um die Normalität des Systems wiederherzustellen.
MsgBox % "Sleep-Dauer = " . (A_TickCount - StartZeit) / Iterationen