Partager via


Async.AwaitIAsyncResult, méthode (F#)

Crée un calcul asynchrone qui attendra sur IAsyncResult.

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

Paramètres

  • iar
    Type : IAsyncResult

    IAsyncResult à attendre.

  • millisecondsTimeout
    Type : int

    Valeur du délai d'attente en millisecondes. Si aucune valeur n'est fournie, valeur par défaut -1, correspondant à Infinite.

Valeur de retour

Calcul asynchrone qui attend le IAsyncResult 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.AwaitIAsyncResult pour installer et effectuer un calcul qui est déclenchée lorsqu'une opération asynchrone .NET Framework précédente qui génère IAsyncResult prend fin. Dans ce cas, avec l'appel de AwaitIAsyncResult, l'opération attend la fin d'une opération d'écriture dans le fichier avant d'ouvrir le fichier en vue de sa lecture.

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

Plateformes

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

Informations de version

Versions de bibliothèque principale F#

Prise en charge dans : 2,0, 4,0, portables

Voir aussi

Référence

Control.Async, classe (F#)

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

IAsyncResult