Partager via


Async.AwaitWaitHandle, méthode (F#)

Crée un calcul asynchrone qui attendra le WaitHandle fourni.

Espace de noms/Chemin du module : 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)

Paramètres

  • waitHandle
    Type : WaitHandle.

    Handle d'attente qui peut être signalé.

  • millisecondsTimeout
    Type : int

    Valeur du délai d'attente en millisecondes. Si aucune valeur de délai d'attente n'est fournie, la valeur par défaut est -1, ce qui correspond à system.Threading.Timeout.Infinite.

Valeur de retour

Calcul asynchrone qui attend l'objet WaitHandle donné.

Notes

Le calcul retourne la valeur true si le handle a indiqué un résultat dans le délai d'attente donné.

Exemple

L'exemple de code suivant illustre comment utiliser Async.AwaitWaitHandle pour installer un calcul à exécuter lorsqu'une autre opération asynchrone est remplie, comme indiqué par un handle d'attente.

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

Sortie

      

Plateformes

Windows 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2

Informations de version

Runtime F#

Pris en charge dans : 2.0, 4.0

Silverlight

Prise en charge dans : 3

Voir aussi

Référence

Control.Async, classe (F#)

Microsoft.FSharp.Control, espace de noms (F#)

Historique des modifications

Date

Historique

Motif

Août 2010

Ajout d'un exemple de code

Améliorations apportées aux informations.