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 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2
Versionsinformationen
F#-Runtime
Unterstützt in: 2.0, 4.0
Silverlight
Unterstützt in: 3
Siehe auch
Weitere Ressourcen
Microsoft.FSharp.Control-Namespace (F#)
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
---|---|---|
Juli 2010 |
Codebeispiel hinzugefügt. |
Informationsergänzung. |