I'm trying to do parallel programming using Task in .Net 4.0 c#.

output of my program is little confusing.

```
 class Program
    {
        static void Main(string[] args)
        {

            List<Task> lstTasks =  new List<Task>();
            for (int i = 0; i < 5; i++)
            {
                Task tsk = Task.Factory.StartNew(() => DoSomething(i.ToString()));
                lstTasks.Add(tsk);
            }

            Task.WaitAll(lstTasks.ToArray());
            Console.WriteLine("Done");
            Console.ReadLine();
        }

        static void DoSomething(string tasKname)
        {
            Console.WriteLine(tasKname);
            System.Threading.Thread.Sleep(10000);
        }
    }

```

Output is 

```
5
5
5
5
5
Done.

```

I'm expecting.

```
0
1
2
3
4
Done.

```

where I'm going wrong?