Start-Sleep đ¤
Das Cmdlet Start-Sleep pausiert die AusfĂźhrung eines Skripts oder einer Befehlssequenz fĂźr eine definierte Zeitspanne.
Es wird häufig verwendet, um:
-
Wartezeiten einzubauen
-
Prozesse zu synchronisieren
-
Ressourcen zu schonen (z. B. bei Schleifen)
đ§ Syntax
Start-Sleep [-Seconds] <Double> [<CommonParameters>]
Start-Sleep -Milliseconds <Int32> [<CommonParameters>]
đ Parameter
-Seconds
-
Typ:
Double -
Pflicht: Ja (wenn
-Millisecondsnicht verwendet wird) -
Gibt die Wartezeit in Sekunden an
-
Dezimalwerte sind erlaubt
Start-Sleep -Seconds 2.5
-Milliseconds
-
Typ:
Int32 -
Pflicht: Ja (wenn
-Secondsnicht verwendet wird) -
Gibt die Wartezeit in Millisekunden an
Start-Sleep -Milliseconds 500
â ď¸ Hinweise zur Verwendung
-
-Secondsund-MillisecondsdĂźrfen nicht gleichzeitig verwendet werden -
Während der Ausfßhrung blockiert
Start-Sleepden aktuellen Thread vollständig -
Es erfolgt keine Hintergrundverarbeitung während der Pause
đ Verhalten
| Eigenschaft | Beschreibung |
|---|---|
| Blockierend | Ja |
| RĂźckgabewert | Keiner |
| Thread-Verhalten | Aktueller Thread wird pausiert |
| Genauigkeit | Abhängig vom System-Timer |
đ§Ş Beispiele
Einfaches Warten
Write-Host "Start"
Start-Sleep -Seconds 2
Write-Host "Ende"
Verwendung in Schleifen
for ($i = 1; $i -le 5; $i++) {
Write-Host "Durchlauf $i"
Start-Sleep -Seconds 1
}
Kurze Pause in Millisekunden
Start-Sleep -Milliseconds 200
Dynamische Wartezeit
$delay = 1.5
Start-Sleep -Seconds $delay
âď¸ Typische Anwendungsfälle
-
Polling (z. B. auf Datei oder Prozess warten)
-
Debugging (Abläufe verlangsamen)
-
UI-Skripte (z. B. kurz warten, bis Controls geladen sind)
-
API-Rate-Limiting
â Alternativen / Ergänzungen
[System.Threading.Thread]::Sleep()
[System.Threading.Thread]::Sleep(1000)
Unterschiede:
-
Arbeitet nur mit Millisekunden
-
Weniger PowerShell-idiomatisch
-
Kein Support fĂźr
CommonParameters
Start-Sleep vs. Start-Job
| Szenario | Empfehlung |
|---|---|
| Einfaches Warten | Start-Sleep |
| Asynchrone AusfĂźhrung | Start-Job |
| UI-Responsiveness wichtig | Kein Start-Sleep |
đŤ Typische Fehler
1. Beide Parameter gleichzeitig verwenden
# â Falsch
Start-Sleep -Seconds 1 -Milliseconds 500
2. UI einfrieren
# â Problematisch in WinForms/WPF
Start-Sleep -Seconds 5
âĄď¸ Blockiert die UI komplett
3. Zu kurze Wartezeiten erwarten hohe Präzision
Start-Sleep -Milliseconds 1
âĄď¸ Systembedingt oft ungenau
đ§ Best Practices
-
FĂźr UI-Anwendungen besser Timer verwenden statt
Start-Sleep -
In Schleifen immer bewusst einsetzen, um CPU-Last zu reduzieren
-
Wartezeiten so kurz wie mĂśglich halten
-
Fßr präzise Zeitsteuerung ggf. andere Mechanismen nutzen
Wenn du das Ding in einer WinForms-App benutzt, dann frierst du dir halt elegant dein UI ein und wunderst dich danach, warum alles tot wirkt. Klassischer Anfänger-Move, aber immerhin ein lehrreicher.