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 : intPériode de veille en millisecondes.
Exceptions
Exception |
Condition |
---|---|
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 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Informations de version
Versions de bibliothèque principale F#
Prise en charge dans : 2,0, 4,0, portables