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 : intValeur 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
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. |