Метод 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 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 |
Добавлен пример кода. |
Улучшение информации. |