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: IAsyncResultDas IAsyncResult, auf das gewartet werden soll.
millisecondsTimeout
Typ: intDer 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