Condividi tramite


Metodo Async.AwaitIAsyncResult (F#)

Consente di creare un calcolo asincrono in attesa su IAsyncResult.

Percorso di spazio dei nomi/modulo: Microsoft.FSharp.Control

Assembly: FSharp.Core (in FSharp.Core.dll)

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

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

Parametri

  • iar
    Tipo: IAsyncResult

    IAsyncResult di cui restare in attesa.

  • millisecondsTimeout
    Tipo: int

    Valore di timeout in millisecondi. Se non viene specificato alcun timeout, verrà utilizzato il valore predefinito di -1 che corrisponde a Infinite.

Valore restituito

Calcolo asincrono in attesa dell'elemento IAsyncResult specificato.

Note

Il calcolo restituisce true se l'handle ha indicato un risultato nell'arco del timeout specificato.

Esempio

Nell'esempio di codice riportato di seguito viene illustrato come utilizzare Async.AwaitIAsyncResult per impostare ed eseguire un calcolo che viene attivato quando un'operazione asincrona precedente di .NET Framework che produce IAsyncResult viene completata. In questo caso, la chiamata a AwaitIAsyncResult causa la sospensione dell'operazione poiché si attende il completamento di un'operazione di scrittura del file prima di aprire il file da leggere.

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

Piattaforme

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

Informazioni sulla versione

F# Runtime

Supportato in: 2.0, 4.0

Silverlight

Supportato in: 3

Vedere anche

Riferimenti

Classe Control.Async (F#)

Spazio dei nomi Microsoft.FSharp.Control (F#)

IAsyncResult

Cronologia delle modifiche

Data

Cronologia

Motivo

Agosto 2010

Aggiunto esempio di codice.

Miglioramento delle informazioni.