using System.Threading.Tasks;
static void Log(string message)
"{0:yyyy-MM-dd HH:mm:ss.fff} [{1:X4}] {2}",
Thread.CurrentThread.ManagedThreadId,
static async Task Execute(params Func<Task>[] actions)
var tasks = actions.Select( action => action() );
await Task.WhenAll(tasks);
public static async Task MainAsync()
public static void Main()
MainAsync().GetAwaiter().GetResult();