Freigeben über


Async.AwaitIAsyncResult-Methode (F#)

Erstellt eine asynchrone Berechnung, die auf das IAsyncResult wartet.

Namespace/Modulpfad: 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)

Parameter

  • iar
    Typ: IAsyncResult

    Das IAsyncResult, auf das gewartet werden soll.

  • millisecondsTimeout
    Typ: int

    Der Timeoutwert in Millisekunden.Ohne eine Angabe ist der Standardwert -1. Dies entspricht Infinite.

Rückgabewert

Eine asynchrone Berechnung, die auf den angegebenen IAsyncResult wartet.

Hinweise

Die Berechnung gibt true zurück, wenn das Handle ein Ergebnis im angegebenen Timeout angegeben hat.

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie mit Async.AwaitIAsyncResult eine Berechnung eingerichtet und ausgeführt wird, die ausgelöst wird, wenn ein vorheriger asynchroner .NET Framework-Vorgang beendet wird, der IAsyncResult generiert.In diesem Fall bewirkt der Aufruf von AwaitIAsyncResult, dass der Vorgang auf den Abschluss des Dateischreibvorgangs wartet, bevor die Datei zum Lesen geöffnet wird.

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

Plattformen

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

Versionsinformationen

F#-Kern-Bibliotheks-Versionen

Unterstützt in: 2,0, 4,0, portablen

Siehe auch

Referenz

Control.Async-Klasse (F#)

Microsoft.FSharp.Control-Namespace (F#)

IAsyncResult