Table of contents
TOC
Collapse the table of content
Expand the table of content

Async.Sleep Method (F#)

Den Delimarsky|Last Updated: 6/10/2016
|
1 Contributor

Creates an asynchronous computation that will sleep for the given time. This is scheduled using a System.Threading.Timer object. The operation will not block operating system threads for the duration of the wait.

Namespace/Module Path: Microsoft.FSharp.Control

Assembly: FSharp.Core (in FSharp.Core.dll)

Syntax

// Signature:
static member Sleep : int -> Async<unit>

// Usage:
Async.Sleep (millisecondsDueTime)

Parameters

millisecondsDueTime Type: int

The number of milliseconds to sleep.

Return Value

Returns an asynchronous computation that will sleep for the given time.

Example

The following code example shows how to use Async.Sleep to simulate computations that run for specific durations.


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

Sample Output

The output is interleaved, because there are multiple threads running at the same time.
Job Job 0 start
1 start
Job 2 starJob 3 start
Job 4 start
Job 5 start
Job 6 start
Job 7 start
Job 8 start
Job 9 start
t
Job 0 end 0:00:00:01.0091009
Job 1 end 0:00:00:02.0102010
Job 2 end 0:00:00:03.0033003
Job 3 end 0:00:00:04.0074007
Job 4 end 0:00:00:05.0065006
Job 5 end 0:00:00:06.0076007
Job 6 end 0:00:00:07.0007000
Job 7 end 0:00:00:07.9957995
Job 8 end 0:00:00:08.9928992
Job 9 end 0:00:00:09.9919991

Platforms

Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2

Version Information

F# Core Library Versions

Supported in: 2.0, 4.0, Portable

See Also

Control.Async Class (F#)

Microsoft.FSharp.Control Namespace (F#)

© 2016 Microsoft