using System.Threading.Tasks;
using System.Diagnostics;
const int DELAY_MS = 100;
var sw = new Stopwatch();
var t1 = DelayAndReturn(1);
var t2 = DelayAndReturn(2);
await t1.ConfigureAwait(false);
await t2.ConfigureAwait(false);
Console.WriteLine($"{sw.Elapsed}");
var t3 = Task.Delay(DELAY_MS).ContinueWith(_ => 3);
await Task.Delay(DELAY_MS).ConfigureAwait(false);
await t3.ConfigureAwait(false);
Console.WriteLine($"{sw.Elapsed}");
]).ConfigureAwait(false);
Console.WriteLine($"{sw.Elapsed}");
Task.Run(async () => { await Task.Delay(DELAY_MS).ConfigureAwait(false); return 7; }),
]).ConfigureAwait(false);
Console.WriteLine($"{sw.Elapsed}");
var t9 = DelayAndReturn(9);
await t9.ConfigureAwait(false);
await DelayAndReturn(10).ConfigureAwait(false);
Console.WriteLine($"{sw.Elapsed}");
async Task<int> DelayAndReturn(int x) { await Task.Delay(DELAY_MS); return x; }