Udostępnij za pośrednictwem


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: int

    Liczba milisekund w stan uśpienia.

Wyjątki

Wyjątek

Warunek

ArgumentOutOfRangeException

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

Zobacz też

Informacje

Klasa Control.Async (F#)

Obszar nazw Microsoft.FSharp.Control (F#)