Async.AwaitWaitHandle Yöntemi (F#)
Sağlanan için bekleyeceği zaman uyumsuz bir hesaplama oluşturur WaitHandle.
Ad alanı/modül yolu: Microsoft.FSharp.Control
Derleme: FSharp.Core (FSharp.Core.dll),
// Signature:
static member AwaitWaitHandle : WaitHandle * ?int -> Async<bool>
// Usage:
Async.AwaitWaitHandle (waitHandle)
Async.AwaitWaitHandle (waitHandle, millisecondsTimeout = millisecondsTimeout)
Parametreler
waitHandle
Türü:WaitHandleErdiği bekleme işleci.
millisecondsTimeout
Türü: intMilisaniye cinsinden zaman aşımı değeri. Hiçbir zaman aşımı değeri belirtilmezse, varsayılan değer istem için karşılık gelen -1 ' dir.Threading.timeout.Infinite.
Dönüş Değeri
Bekler, zaman uyumsuz bir hesaplama verilen WaitHandle nesnesi.
Notlar
Olay işleyici bir sonucu verilen zaman içinde belirtirse, hesaplama true döner.
Örnek
Aşağıdaki kod örneği nasıl kullanılacağı gösterilmiştir Async.AwaitWaitHandle bir başka bir zaman uyumsuz işlem tamamlandığında, bekleme bir tanıtıcı tarafından belirtildiği şekilde çalışmak üzere ayarlayacağınız için.
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
Çıktı
Platformlar
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Sürüm Bilgisi
F# Çekirdek Kitaplığı sürümleri
Desteklenen: 2.0, 4.0, Portable