using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
public static void Main()
var task1 = Task.Factory.StartNew(()=> {
Console.WriteLine("task1 body");
var innerTask1 = Task.Factory.StartNew(async()=> {
Console.WriteLine("inner task1 body");
await Task.Delay(TimeSpan.FromMilliseconds(1000));
Console.WriteLine("inner task1 Finished");
}, TaskCreationOptions.LongRunning);
var task2 = Task.Factory.StartNew(()=> {
Console.WriteLine("task2 body");
var innerTask2 = Task.Factory.StartNew(async()=> {
Console.WriteLine("inner task2 body");
await Task.Delay(TimeSpan.FromMilliseconds(2000));
Console.WriteLine("inner task2 Finished");
}, TaskCreationOptions.LongRunning);
Task.WaitAll(new []{task1,task2});
Console.WriteLine(task1.Status);
Console.WriteLine(task2.Status);
System.Threading.Thread.Sleep(5000);