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 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#)

IAsyncResult

Historique des modifications

Date

Historique

Motif

Août 2010

Ajout d'un exemple de code

Améliorations apportées aux informations.