Delay Method (Int32, CancellationToken)
Collapse the table of content
Expand the table of content

Task.Delay Method (Int32, CancellationToken)

.NET Framework (current version)
 

Creates a cancellable task that completes after a time delay.

Namespace:   System.Threading.Tasks
Assembly:  mscorlib (in mscorlib.dll)

Public Shared Function Delay (
	millisecondsDelay As Integer,
	cancellationToken As CancellationToken
) As Task

Parameters

millisecondsDelay
Type: System.Int32

The number of milliseconds to wait before completing the returned task, or -1 to wait indefinitely.

cancellationToken
Type: System.Threading.CancellationToken

The cancellation token that will be checked prior to completing the returned task.

Return Value

Type: System.Threading.Tasks.Task

A task that represents the time delay.

Exception Condition
ArgumentOutOfRangeException

The millisecondsDelay argument is less than -1.

TaskCanceledException

The task has been canceled.

ObjectDisposedException

The provided cancellationToken has already been disposed.

If the cancellation token is signaled before the specified time delay, a TaskCanceledException exception results, and the task is completed in the TaskStatus.Canceled state. Otherwise, the task is completed in the TaskStatus.RanToCompletion state once the specified time delay has elapsed.

For usage scenarios and additional examples, see the documentation for the Delay(Int32) overload.

This method depends on the system clock. This means that the time delay will approximately equal the resolution of the system clock if the millisecondsDelay argument is less than the resolution of the system clock, which is approximately 15 milliseconds on Windows systems.

The following example launches a task that includes a call to the Delay(Int32, CancellationToken) method with a one second delay. Before the delay interval elapses, the token is cancelled. The output from the example shows that, as a result, a TaskCanceledException is thrown, and the tasks' Status property is set to TaskStatus.Canceled.

Imports System.Threading
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim source As New CancellationTokenSource()

      Dim t = Task.Run(Async Function()
                                Await Task.Delay(1000, source.Token)
                                Return 42
                       End Function)
      source.Cancel()
      Try
         t.Wait()
      Catch ae As AggregateException
         For Each e In ae.InnerExceptions
            Console.WriteLine("{0}: {1}", e.GetType().Name, e.Message)
         Next
      End Try
      Console.Write("Task t Status: {0}", t.Status)
      If t.Status = TaskStatus.RanToCompletion Then
         Console.Write(", Result: {0}", t.Result)
      End If
      source.Dispose()
   End Sub
End Module
' The example displays the following output:
'       TaskCanceledException: A task was canceled.
'       Task t Status: Canceled

Universal Windows Platform
Available since 8
.NET Framework
Available since 4.5
Portable Class Library
Supported in: portable .NET platforms
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1
Return to top
Show:
© 2016 Microsoft