Compartir a través de


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: int

    Número de milisegundos durante los que se va a suspender.

Excepciones

Excepción

Condition

ArgumentOutOfRangeException

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

Vea también

Referencia

Control.Async (Clase de F#)

Microsoft.FSharp.Control (Espacio de nombres de F#)