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 die 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 zwischen 1 und 10 gleichbedeutend mit 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 der Ruhephase können neue Threads per Hotkey, benutzerdefinierte Menüeinträge oder Timer gestartet werden.

Sleep -1: Eine Verzögerung von -1 erzeugt keine Ruhephase, sondern ermöglicht dem Skript, seine Meldungswarteschlange sofort zu überprüfen. Das kann verwendet werden, um ausstehende Unterbrechungen an einer bestimmten Stelle zu erzwingen anstatt zufällig. Siehe Critical für mehr Details.

Siehe auch

SetKeyDelay, SetMouseDelay, SetControlDelay, SetWinDelay, SetBatchLines

Beispiele

Sleep, 1000  ; 1 Sekunde
; Das folgende Beispiel zeigt, wie die Ruhephase
; kleiner als 10 oder 15.6 Millisekunden sein 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.

Ruhedauer = 1  ; Das kann 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.
; Auf einem PC, dessen Ruhephase normalerweise auf 15.6 ms gerundet wird, sollte Zeitperiode=7 ausprobiert werden,
; um kürzere Ruhephasen zu ermöglichen, und Zeitperiode=3 oder weniger, um die kürzesten Ruhephasen 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, Ruhedauer)  ; 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 % "Ruhedauer = " . (A_TickCount - Startzeit) / Iterationen