Async.Sleep-Methode (F#)
Erstellt eine asynchrone Berechnung, die während des angegebenen Zeitraums ruht.Dies wird mithilfe eines Timer-Objekts geplant.Betriebssystemthreads werden von diesem Vorgang während der Wartezeit nicht blockiert.
Namespace/Modulpfad: Microsoft.FSharp.Control
Assembly: FSharp.Core (in FSharp.Core.dll)
// Signature:
static member Sleep : int -> Async<unit>
// Usage:
Async.Sleep (millisecondsDueTime)
Parameter
millisecondsDueTime
Typ: intDie Anzahl der Millisekunden für den Standbymodus.
Ausnahmen
Ausnahme |
Bedingung |
---|---|
Wird ausgelöst, wenn die Vorlaufzeit negativ und nicht unendlich ist. |
Rückgabewert
Eine asynchrone Berechnung, die während des angegebenen Zeitraums ruht.
Beispiel
Im folgenden Codebeispiel wird veranschaulicht, wie mit Async.Sleep Berechnungen simuliert werden, die für bestimmte Zeitspannen ausgeführt werden.
let simulatedJob id time =
let timestamp() = System.DateTime.Now.Ticks
async {
printfn "Job %d start" id
let timestamp1 = timestamp()
do! Async.Sleep(time * 1000)
let timestamp2 = timestamp()
let timespan = System.TimeSpan(timestamp2 - timestamp1)
printfn "Job %d end %s" id (timespan.ToString("G"))
}
[ 1 .. 10]
|> List.mapi (fun index time -> simulatedJob index time)
|> Async.Parallel
|> Async.RunSynchronously
|> ignore
Beispielausgabe
Die Ausgabe überlappt sich, da mehrere Threads gleichzeitig ausgeführt werden.
Plattformen
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Versionsinformationen
F#-Kern-Bibliotheks-Versionen
Unterstützt in: 2,0, 4,0, portablen