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 8,Windows 7,Windows server 2012中,Windows server 2008 R2
版本信息
F#核心库版本
支持:2.0,4.0,可移植