Partager via


Async.Sleep, méthode (F#)

Crée un calcul asynchrone qui se met en état de veille durant la période indiquée. Cela est planifié à l'aide d'un objet Timer. Elle ne bloque pas les threads du système d'exploitation durant l'attente.

Espace de noms/Chemin du module : Microsoft.FSharp.Control

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

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

// Usage:
Async.Sleep (millisecondsDueTime)

Paramètres

  • millisecondsDueTime
    Type : int

    Période de veille en millisecondes.

Exceptions

Exception

Condition

ArgumentOutOfRangeException

Levée lorsque le délai d'attente est négatif et non infini.

Valeur de retour

Calcul asynchrone qui se met en état de veille durant la période indiquée.

Exemple

L'exemple de code suivant montre comment utiliser Async.Sleep pour simuler des calculs qui s'exécutent sur des périodes spécifiques.

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

Résultat de l'exemple

La sortie est entrelacée, car il existe plusieurs threads qui s'exécutent en même temps.

  

Plateformes

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

Informations de version

Runtime F#

Pris en charge dans : 2.0, 4.0

Silverlight

Prise en charge dans : 3

Voir aussi

Référence

Control.Async, classe (F#)

Microsoft.FSharp.Control, espace de noms (F#)

Historique des modifications

Date

Historique

Motif

Juillet 2010

Ajout d'un exemple de code

Améliorations apportées aux informations.