Async.Sleep 方法 (F#)

更新:2010 年 7 月

创建一个将休眠给定时间的异步计算。 这是使用 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 SP2、Windows XP SP3、Windows XP x64 SP2、Windows Server 2008 R2、Windows Server 2008 SP2、Windows Server 2003 SP2

版本信息

F# 运行时

受以下版本支持:2.0、4.0

Silverlight

受以下版本支持:3

请参见

参考

Control.Async 类 (F#)

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

修订记录

Date

修订记录

原因

2010 年 7 月

添加了代码示例。

信息补充。