Condividi tramite


Metodo Async.Sleep (F#)

Crea un calcolo asincrono che rimarrà in sospensione per il tempo specificato.Questa operazione viene pianificata utilizzando un oggetto Timer.L'operazione non bloccherà i thread del sistema operativo per la durata dell'attesa.

Percorso spazio dei nomi/modulo: Microsoft.FSharp.Control

Assembly: FSharp.Core (in FSharp.Core.dll)

// Signature:
static member Sleep : int -> Async<unit>

// Usage:
Async.Sleep (millisecondsDueTime)

Parametri

  • millisecondsDueTime
    Tipo: int

    Numero di millisecondi di sospensione.

Eccezioni

Eccezione

Condizione

ArgumentOutOfRangeException

Generata quando il tempo di attesa è negativo e non infinito.

Valore restituito

Calcolo asincrono che rimarrà in sospensione per il tempo specificato.

Esempio

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare Async.Sleep per simulare i calcoli eseguiti per durate specifiche.

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

Esempio di output

L'output è interfogliato, poiché esistono più thread contemporaneamente in esecuzione.

  

Piattaforme

Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2

Informazioni sulla versione

Versioni della libreria di base F#

Supportato in: 2,0, 4,0, portabile

Vedere anche

Riferimenti

Classe Control.Async (F#)

Spazio dei nomi Microsoft.FSharp.Control (F#)