Async.AwaitIAsyncResult (Método de F#)

Crea un cálculo asincrónico que esperará la interfaz IAsyncResult.

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

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

// Signature:
static member AwaitIAsyncResult : IAsyncResult * ?int -> Async<bool>

// Usage:
Async.AwaitIAsyncResult (iar)
Async.AwaitIAsyncResult (iar, millisecondsTimeout = millisecondsTimeout)

Parámetros

  • iar
    Tipo: IAsyncResult

    IAsyncResult que se va a esperar.

  • millisecondsTimeout
    Tipo: int

    Valor del tiempo de espera, en milisegundos. Si no se proporciona ningún valor, se usará el valor predeterminado -1, el cual equivale a Infinite.

Valor devuelto

Cálculo asincrónico que va a esperar el IAsyncResult 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.AwaitIAsyncResult para configurar y ejecutar un cálculo que se desencadena al finalizar una operación asincrónica anterior de .NET Framework que genera un objeto IAsyncResult. En este caso, la llamada a AwaitIAsyncResult hace que la operación espere a que se complete una operación de escritura de archivo antes de abrir el archivo para su lectura.

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 AwaitIAsyncResult to wait for the write operation
// to be completed before reading.
let readFile filename asyncResult count = 
    async {
        let! returnValue = Async.AwaitIAsyncResult(asyncResult)
        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 count
                   |> Async.RunSynchronously

Plataformas

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

Información de versiones

Runtime de F#

Se admite en las versiones: 2.0, 4.0

Silverlight

Se admite en la versión: 3

Vea también

Referencia

Control.Async (Clase de F#)

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

IAsyncResult

Historial de cambios

Fecha

Historial

Motivo

Agosto de 2010

Se ha agregado un ejemplo de código.

Mejora de la información.