Freigeben über


Async.AwaitWaitHandle-Methode (F#)

Aktualisiert: August 2010

Erstellt eine asynchrone Berechnung, die auf das angegebene WaitHandle wartet.

Namespace/Modulpfad: Microsoft.FSharp.Control

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

// Signature:
static member AwaitWaitHandle : WaitHandle * ?int -> Async<bool>

// Usage:
Async.AwaitWaitHandle (waitHandle)
Async.AwaitWaitHandle (waitHandle, millisecondsTimeout = millisecondsTimeout)

Parameter

  • waitHandle
    Typ: WaitHandle

    Das Wait-Handle, das signalisiert werden kann.

  • millisecondsTimeout
    Typ: int

    Der Timeoutwert in Millisekunden. Wenn kein Timeoutwert bereitgestellt wird, ist der Standardwert -1, was System.Threading.Timeout.Infinite entspricht.

Rückgabewert

Eine asynchrone Berechnung, die auf das angegebene WaitHandle-Objekt 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.AwaitWaitHandle eine Berechnung eingerichtet wird, die ausgeführt wird, ein anderer asynchroner Vorgang abgeschlossen wird, wie von einem Wait-Handle angegeben.

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 the waitHandle to wait for the write operation
// to be completed before reading.
let readFile filename waitHandle count = 
    async {
        let! returnValue = Async.AwaitWaitHandle(waitHandle)
        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.AsyncWaitHandle count
                   |> Async.RunSynchronously

Output

      

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

Weitere Ressourcen

Control.Async-Klasse (F#)

Microsoft.FSharp.Control-Namespace (F#)

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

August 2010

Codebeispiel hinzugefügt.

Informationsergänzung.