Continuation tasks in .NET TPL: a simple continuation example
October 7, 2015 1 Comment
Tasks in .NET TPL make it easy to assign tasks that should run upon the completion of another task.
We’ll need a basic object with a single property:
public class Series { public int CurrentValue { get; set; } }
Declare a task that increases the CurrentValue in a loop and return the Series. This task is called the antecedent task.
Task<Series> motherTask = Task.Factory.StartNew<Series>(() => { Series series = new Series(); for (int i = 0; i < 10000; i++) { series.CurrentValue++; } return series; });
Declare the continuation task where we also use the antecedent as method parameter:
motherTask.ContinueWith((Task<Series> previousTask) => { Console.WriteLine("Final Balance: {0}", previousTask.Result.CurrentValue); });
The antecedent task will then schedule the continuation task for you. If there are other tasks then they may run before or after the continuation tasks depending on the task scheduler.
View the list of posts on the Task Parallel Library here.
There is no need to cast the previousTask to Task. You can just use it as “previousTask => {}”