Async.Sleep (Método de F#)
Crea un cálculo asincrónico que estará en suspensión durante el tiempo especificado. Se programa mediante un objeto Timer. La operación no bloqueará los subprocesos del sistema operativo durante el tiempo de espera.
Espacio de nombres/Ruta de acceso del módulo: Microsoft.FSharp.Control
Ensamblado: FSharp.Core (en FSharp.Core.dll)
// Signature:
static member Sleep : int -> Async<unit>
// Usage:
Async.Sleep (millisecondsDueTime)
Parámetros
millisecondsDueTime
Tipo: intNúmero de milisegundos durante los que se va a suspender.
Excepciones
Excepción |
Condition |
---|---|
Se produce cuando el tiempo de expiración es negativo y no infinito. |
Valor devuelto
Cálculo asincrónico que estará en suspensión durante el tiempo especificado.
Ejemplo
En el ejemplo de código siguiente se muestra cómo usar Async.Sleep para simular los cálculos que se ejecutan con duraciones concretas.
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
Resultados del ejemplo
La salida se intercala porque hay muchos subprocesos en ejecución al mismo tiempo.
Plataformas
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Información de versiones
Versiones de la biblioteca básica de F#
Se admite en: 2.0, 4.0, portables