Hi I'm trying to make a simple code to run my function in async way. But the result turn out to be quite unexpected. the result i want is like the counter function can run in parallel way and output the result some way similar like:
Start1
End1
Start2
End2
Start3
Start4
End 3
......
Hi
but it turns out it only get the for loop value i=60 into counter function. I'm quite new to async method and google also cant find the appropriate explanation.
namespace Asycn
{
   class Program
   {
       static async Task Main(string[] args)
       {
           var tasks = new List<Task>();
           for (int i = 0; i < 60; i++)
           {
               tasks.Add(Task.Run(()=>counters(i)));
           }
           await Task.WhenAll(tasks);
           Console.WriteLine("Hi");
       }
       private static void counters(int num)
       {
           Console.WriteLine("Start"+num.ToString());
           Thread.Sleep(num*1000);
           Console.WriteLine("End"+num.ToString());
       }
   }
}
And below is the running result Running Result
 
     
    