Compartir a través de


Async.AwaitWaitHandle (Método de F#)

Crea un cálculo asincrónico que esperará el objeto WaitHandle proporcionado.

Espacio de nombres/Ruta de acceso del módulo: Microsoft.FSharp.Control

Ensamblado: FSharp.Core (en FSharp.Core.dll)

// Signature:
static member AwaitWaitHandle : WaitHandle * ?int -> Async<bool>

// Usage:
Async.AwaitWaitHandle (waitHandle)
Async.AwaitWaitHandle (waitHandle, millisecondsTimeout = millisecondsTimeout)

Parámetros

  • waitHandle
    Tipo: WaitHandle

    Identificador de espera que puede señalizarse.

  • millisecondsTimeout
    Tipo: int

    Valor del tiempo de espera, en milisegundos. Si no se proporciona ningún valor de tiempo de espera, el valor predeterminado es -1, que corresponde a ystem.Threading.Timeout.Infinite.

Valor devuelto

Cálculo asincrónico que va a esperar el objeto WaitHandle especificado.

Comentarios

El cálculo devuelve true si el identificador indicó un resultado en el tiempo de espera especificado.

Ejemplo

En el ejemplo de código siguiente se muestra cómo usar Async.AwaitWaitHandle para configurar un cálculo que se ejecutará al completarse otra operación asincrónica, indicado por un identificador de espera.

open System.IO

let streamWriter1 = File.CreateText("test1.txt")
let count = 10000000
let buffer = Array.init count (fun index -> byte (index % 256)) 

printfn "Writing to file test1.txt." 
let asyncResult = streamWriter1.BaseStream.BeginWrite(buffer, 0, count, null, null)

// Read a file, but use the waitHandle to wait for the write operation 
// to be completed before reading. 
let readFile filename waitHandle count = 
    async {
        let! returnValue = Async.AwaitWaitHandle(waitHandle)
        printfn "Reading from file test1.txt." 
        // Close the file.
        streamWriter1.Close()
        // Now open the same file for reading. 
        let streamReader1 = File.OpenText(filename)
        let! newBuffer = streamReader1.BaseStream.AsyncRead(count)
        return newBuffer
    }

let bufferResult = readFile "test1.txt" asyncResult.AsyncWaitHandle count
                   |> Async.RunSynchronously

Output

  
  

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#)