Share via


Async.AwaitIAsyncResult-Methode (F#)

Aktualisiert: August 2010

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 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2

Versionsinformationen

F#-Runtime

Unterstützt in: 2.0, 4.0

Silverlight

Unterstützt in: 3

Siehe auch

Referenz

IAsyncResult

Weitere Ressourcen

Control.Async-Klasse (F#)

Microsoft.FSharp.Control-Namespace (F#)

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

August 2010

Codebeispiel hinzugefügt.

Informationsergänzung.