Export (0) Print
Expand All
Expand Minimize

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
ObjectDisposedException

The CancellationTokenSource that created cancellationToken has already been disposed.

ArgumentNullException

The continuationAction argument is null.

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 dates(99) As Date 

      Dim firstTask As Task = Task.Factory.StartNew( Sub()
                               Dim rnd As New Random()
                               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 
                            End Sub ) 

      Dim continuationTask As Task = firstTask.ContinueWith( Sub(continuation)
                             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 WaitAll method is called to ensure that both the original task and its continuation finish executing before the example ends.

For an additional example, see Continuation Tasks.

.NET Framework

Supported in: 4.6, 4.5, 4

.NET Framework Client Profile

Supported in: 4

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

Supported in: Windows Phone 8.1

Supported in: Windows Phone Silverlight 8.1

Supported in: Windows Phone Silverlight 8

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft