Метод 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 7, Windows Vista с пакетом обновления 2 (SP2), Windows XP с пакетом обновления 3 (SP3), Windows XP x64 с пакетом обновления 2 (SP2), Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2), Windows Server 2003 с пакетом обновления 2 (SP2)
Сведения о версии
Среда выполнения F#
Поддерживается в версиях 2.0, 4.0
Silverlight
Поддерживается в версии 3
См. также
Ссылки
Пространство имен Microsoft.FSharp.Control (F#)
Журнал изменений
Дата |
Журнал |
Причина |
---|---|---|
Август 2010 |
Добавлен пример кода. |
Улучшение информации. |