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