title: Not slowing down a loop of tasks, and know when result is returned
body: <pre><code>Task&lt;string&gt; RunList(int client)
  {
      return pages[client];
  }
  
  private async void Form1_DoubleClick(object sender, EventArgs e)
  {
      for (int x = 0; x &lt; listBox1.Items.Count; x++)
      {
          RunList(x);
      }
  } 
  </code></pre>
  
  <p>This will fly through the loop of tasks, but how do you know when the results are all in without compromising speed of the loop?</p>