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 di 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

Output di esempio

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

  

Piattaforme

Windows 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2.

Informazioni sulla versione

F# Runtime

Supportato in: 2.0, 4.0

Silverlight

Supportato in: 3

Vedere anche

Riferimenti

Classe Control.Async (F#)

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

Cronologia delle modifiche

Data

Cronologia

Motivo

Luglio 2010

Aggiunto esempio di codice.

Miglioramento delle informazioni.