Метод Async.AwaitWaitHandle (F#)
Создает асинхронное вычисление, которое будет ожидать предоставляемый объект WaitHandle.
Пространство имен/путь к модулю: Microsoft.FSharp.Control
Сборка: FSharp.Core (в FSharp.Core.dll)
// Signature:
static member AwaitWaitHandle : WaitHandle * ?int -> Async<bool>
// Usage:
Async.AwaitWaitHandle (waitHandle)
Async.AwaitWaitHandle (waitHandle, millisecondsTimeout = millisecondsTimeout)
Параметры
waitHandle
Тип: WaitHandleДескриптор ожидания, которому можно послать сигнал.
millisecondsTimeout
Тип: intЗначение времени ожидания в миллисекундах.Если значение времени ожидания не указано, значение по умолчанию — -1, что соответствует System.Threading.Timeout.Infinite.
Возвращаемое значение
Асинхронное вычисление, которое ожидает заданный объект WaitHandle.
Заметки
Вычисление возвращает значение true, если дескриптор обозначил результат в течение заданного времени ожидания.
Пример
В следующем примере кода демонстрируется использование Async.AwaitWaitHandle для задания запуска вычисления при выполнении другой асинхронной операции, как указано в дескрипторе ожидания.
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
Output
Платформы
Windows 8, Windows 7, Windows Server 2012, Windows 2008 Server R2
Сведения о версии
Основной версии библиотеки F#
Поддерживается в: 2.0, 4.0, портативное