using System.Threading.Tasks;
private static Task _RunningTask { get; set; }
public static void Main()
_RunningTask = new Task(() => {
Console.WriteLine("This is my awesome action starting");
_RunningTask = _RunningTask.ContinueWith(t => {
Console.WriteLine("Running Task 1 Start");
int[] myArray = new int[1];
myArray[0] = DateTime.Now.Day;
Console.WriteLine("Running Task 1 End");
}, TaskContinuationOptions.OnlyOnRanToCompletion);
_RunningTask = _RunningTask.ContinueWith(t => {
Console.WriteLine("Running Task 2 Start");
int[] myArray = new int[1];
myArray[0] = DateTime.Now.Day;
Console.WriteLine("Running Task 2 End");
}, TaskContinuationOptions.OnlyOnRanToCompletion);
int[] myArray3 = new int[6];
int currentMonth = DateTime.Now.Month;
myArray3[currentMonth] = DateTime.Now.Day;
Console.WriteLine("This is my awesome action ending");
_RunningTask.ContinueWith(t => {
Console.WriteLine("Error: " + t.Exception.ToString());
}, TaskContinuationOptions.OnlyOnFaulted);
Console.WriteLine("After Task.Wait");