Метод Async.Sleep (F#)
Создает асинхронное вычисление, которое будет находиться в спящем режиме в течение заданного времени. Планируется с использованием объекта Timer. Данная операция не будет блокировать потоки операционной системы во время ожидания.
Пространство имен/путь к модулю: Microsoft.FSharp.Control
Сборка: FSharp.Core (в FSharp.Core.dll)
// Signature:
static member Sleep : int -> Async<unit>
// Usage:
Async.Sleep (millisecondsDueTime)
Параметры
millisecondsDueTime
Тип: intВремя пребывания в спящем режиме в миллисекундах.
Исключения
Исключение |
Атрибут Condition |
---|---|
Создается, если заданное время является отрицательным или бесконечным. |
Возвращаемое значение
Асинхронное вычисление, которое будет находиться в спящем режиме в течение заданного времени.
Пример
В следующем примере кода показано, как использовать Async.Sleep для имитации вычислений, которые выполняются конкретной промежуток времени.
let simulatedJob id time =
let timestamp() = System.DateTime.Now.Ticks
async {
printfn "Job %d start" id
let timestamp1 = timestamp()
do! Async.Sleep(time * 1000)
let timestamp2 = timestamp()
let timespan = System.TimeSpan(timestamp2 - timestamp1)
printfn "Job %d end %s" id (timespan.ToString("G"))
}
[ 1 .. 10]
|> List.mapi (fun index time -> simulatedJob index time)
|> Async.Parallel
|> Async.RunSynchronously
|> ignore
Пример результатов
Результаты чередуются, потому что несколько потоков выполняется одновременно.
Платформы
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 |
Добавлен пример кода. |
Улучшение информации. |