Async.AwaitIAsyncResult – metoda (F#)

Vytvoří asynchronní výpočtu, který bude čekat na IAsyncResult.

Cesta k oboru názvů nebo modul: Microsoft.FSharp.Control

Sestavení: FSharp.Core (v FSharp.Core.dll)

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

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

Parametry

  • iar
    Typ:IAsyncResult

    Třída IAsyncResult čekání na

  • millisecondsTimeout
    Typ: int

    Hodnota časového limitu v milisekundách.Pokud jeden není pak výchozí hodnota -1 odpovídající Infinite.

Vrácená hodnota

Asynchronní výpočtu, který čeká na dané IAsyncResult.

Poznámky

Vrátí výpočtu true Pokud popisovač výsledek v daném časovém limitu.

Příklad

Následující příklad kódu ukazuje, jak použít Async.AwaitIAsyncResult k nastavení a provedení výpočtu, která je spuštěna při předchozí asynchronní operaci rozhraní.NET Framework, který vytváří IAsyncResult dokončení.V tomto případě volání AwaitIAsyncResult způsobí, že operace čekání před otevřením souboru pro čtení dokončení operace zápisu souboru.

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

Platformy

Windows 8, Windows 7, Windows Server 2012 Windows Server 2008 R2

Informace o verzi

F# základní verze knihovny

Podporovány: 2.0, 4.0, přenosné

Viz také

Referenční dokumentace

Control.Async – třída (F#)

Microsoft.FSharp.Control – obor názvů (F#)

IAsyncResult