Metoda Async.Sleep (F#)
Tworzy asynchronicznego obliczeń, który będzie sleep dla danego czasu.To jest zaplanowane przy użyciu Timer obiektu.Operacja nie blokuje wątków systemu operacyjnego na czas oczekiwania.
Ścieżka obszaru nazw/modułu: Microsoft.FSharp.Control
Zgromadzenie: FSharp.Core (w FSharp.Core.dll)
// Signature:
static member Sleep : int -> Async<unit>
// Usage:
Async.Sleep (millisecondsDueTime)
Parametry
millisecondsDueTime
Typ: intLiczba milisekund w stan uśpienia.
Wyjątki
Wyjątek |
Warunek |
---|---|
Generowane po Godzina realizacji jest ujemny, a nie infinite. |
Wartość zwracana
Asynchroniczne obliczeń, który będzie sleep dla danego czasu.
Przykład
Poniższy przykład kodu pokazuje, jak używać Async.Sleep do symulacji obliczeń, które są uruchamiane na określony czas trwania.
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
Przykładowe dane wyjściowe
Dane wyjściowe jest z przeplotem, ponieważ wiele wątków uruchomione jednocześnie.
Platformy
Windows 8, Windows 7, Windows Server 2012 Windows Server 2008 R2
Informacje o wersji
F# Core wersji biblioteki
Obsługiwane: 2.0, 4.0, przenośne