Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
ContinueWith Method (Action(Task))
Collapse the table of content
Expand the table of content

Task.ContinueWith Method (Action(Of Task))

Creates a continuation that executes asynchronously when the target Task completes.

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

'Declaration
Public Function ContinueWith ( _
	continuationAction As Action(Of Task) _
) As Task

Parameters

continuationAction
Type: System.Action(Of Task)

An action to run when the Task completes. When run, the delegate will be passed the completed task as an argument.

Return Value

Type: System.Threading.Tasks.Task
A new continuation Task.

ExceptionCondition
ArgumentNullException

The continuationAction argument is Nothing.

The returned Task will not be scheduled for execution until the current task has completed, whether it completes due to running to completion successfully, faulting due to an unhandled exception, or exiting out early due to being canceled.

The following example defines a task that populates an array with 100 random date and time values. It uses the ContinueWith(Action(Of Task)) method to select the earliest and the latest date values once the array is fully populated.

Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim firstTask = Task.Factory.StartNew( Function()
                               Dim rnd As New Random()
                               Dim dates(99) As Date 
                               Dim buffer(7) As Byte 
                               Dim ctr As Integer = dates.GetLowerBound(0)
                               Do While ctr <= dates.GetUpperBound(0)
                                  rnd.NextBytes(buffer)
                                  Dim ticks As Long = BitConverter.ToInt64(buffer, 0)
                                  If ticks <= DateTime.MinValue.Ticks Or ticks >= DateTime.MaxValue.Ticks Then Continue Do

                                  dates(ctr) = New Date(ticks)
                                  ctr += 1
                               Loop 
                               Return dates
                            End Function )

      Dim continuationTask As Task = firstTask.ContinueWith( Sub(antecedent)
                             Dim dates() As Date = antecedent.Result
                             Dim earliest As Date = dates(0)
                             Dim latest As Date = earliest

                             For ctr As Integer = dates.GetLowerBound(0) + 1 To dates.GetUpperBound(0)
                                If dates(ctr) < earliest Then earliest = dates(ctr)
                                If dates(ctr) > latest Then latest = dates(ctr)
                             Next
                             Console.WriteLine("Earliest date: {0}", earliest)
                             Console.WriteLine("Latest date: {0}", latest)
                          End Sub)                      
      ' Since a console application otherwise terminates, wait for the continuation to complete.
      continuationTask.Wait()
   End Sub 
End Module 
' The example displays output like the following: 
'       Earliest date: 2/11/0110 12:03:41 PM 
'       Latest date: 7/29/9989 2:14:49 PM

Because a console application may terminate before the continuation task executes, the Wait method is called to ensure that the continuation finishes executing before the example ends.

For an additional example, see Chaining Tasks by Using Continuation Tasks.

.NET Framework

Supported in: 4.6, 4.5, 4

.NET Framework Client Profile

Supported in: 4

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone Silverlight 8.1, Windows Phone Silverlight 8

Portable Class Library

Supported in: Portable Class Library
Show:
© 2015 Microsoft