using System.Threading.Tasks;
using System.Collections.Generic;
using System.Diagnostics;
public static void Main()
Console.WriteLine("Main on Thread " + Thread.CurrentThread.ManagedThreadId);
var sw = new Stopwatch();
var m = Enumerable.Range(0, 5).Select(i => MyMethod(i)).ToList();
Task.WaitAll(m.ToArray());
Console.WriteLine(sw.ElapsedMilliseconds);
Console.WriteLine("Task.Run");
var l = Enumerable.Range(0, 5).Select(i => Task.Run(()=>MyMethod(i))).ToList();
Task.WaitAll(l.ToArray());
Console.WriteLine(sw.ElapsedMilliseconds);
Console.WriteLine("Main on Thread " + Thread.CurrentThread.ManagedThreadId);
private static async Task MyMethod(int i) {
Console.WriteLine(i + " on Thread " + Thread.CurrentThread.ManagedThreadId);
Console.WriteLine(i + " on Thread " + Thread.CurrentThread.ManagedThreadId);