title: Task.delay inside Task.Run
body: <p>Here I have the following piece of code:</p>
  <pre class="lang-cs prettyprint-override"><code>var tasks = new List&lt;Task&gt;();
  
  var stopwatch = new Stopwatch();
  for (var i = 0; i &lt; 100; i++)
  {
      var person = new Person { Id = i };
      list.Add(person);
  }
  
  stopwatch.Start();
  foreach (var item in list)
  {
      var task = Task.Run(async () =&gt;
      {
          await Task.Delay(1000);
          Console.WriteLine(&quot;Hi&quot;);
      });
      tasks.Add(task);
  }
  
  await Task.WhenAll(tasks);
  stopwatch.Stop();
  </code></pre>
  <p>I assume that I will have about <strong>100 seconds</strong> in the result of the stopwatch.
  But I have <strong>1,1092223</strong>.</p>
  <p>I think I missing something, can you help me to explain why?</p>