Поделиться через


Метод 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

ArgumentOutOfRangeException

Создается, если заданное время является отрицательным или бесконечным.

Возвращаемое значение

Асинхронное вычисление, которое будет находиться в спящем режиме в течение заданного времени.

Пример

В следующем примере кода показано, как использовать 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

См. также

Ссылки

Класс Control.Async (F#)

Пространство имен Microsoft.FSharp.Control (F#)

Журнал изменений

Дата

Журнал

Причина

Июль 2010

Добавлен пример кода.

Улучшение информации.