Shared C# Snippet

using System;
using System.Diagnostics;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var sw = Stopwatch.StartNew();

        Console.WriteLine("Start");

        var task1 = DoWorkAsync("A", 3000);
        var task2 = DoWorkAsync("B", 2000);
        var task3 = DoWorkAsync("C", 1000);

        Console.WriteLine("Tasks created");

        await task1;
        await task2;
        await task3;

        Console.WriteLine($"Done in {sw.ElapsedMilliseconds} ms");
    }

    static async Task DoWorkAsync(string name, int delay)
    {
        Console.WriteLine($"{name} started");
        await Task.Delay(delay);
        Console.WriteLine($"{name} finished");
    }
}