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 8,Windows 7,Windows server 2012中,Windows server 2008 R2

版本信息

F#核心库版本

支持:2.0,4.0,可移植

请参见

参考

Control.Async 类 (F#)

Microsoft.FSharp.Control 命名空间 (F#)