title: Threads not being created correctly. Very simple WaitAny c#
body: <p>I have some very simple code that's attempting to multi-thread an existing script. </p>
  
  <p>On inspecting the treads window in visual Studio and calling <code>Thread.CurrentThread.ManagedThreadId</code> it always reports back as the same thread as starting the process. When ending it reports back a different thread id. </p>
  
  <p>The threads do seem to be performing the task asynchronously, but the logging and output from visual studio are making me think otherwise.  </p>
  
  <p>Please could someone clarify what is going on and if I've made a mistake in my approach? </p>
  
  <pre><code>namespace ResolveGoogleURLs
  {
      class Program
      {
          public static void Main(string[] args)
          {
              HomeController oHC = new HomeController();
          }
      }
  }
  
  using System;
  using System.Collections.Generic;
  using System.Threading;
  using System.Threading.Tasks;
  
  namespace ResolveGoogleURLs
  {
      class HomeController
      {
          public static int MaxJobs = 5;
          public static int RecordsPerJob = 1000;
  
          public static List&lt;Task&gt; TaskList = new List&lt;Task&gt;(MaxJobs);
  
  
          public HomeController()
          {
              CreateJobs();
  
              MonitorTasks();
          }
  
  
          public void MonitorTasks()
          {
              while (1 == 1)
              {
                  Task.WaitAny(TaskList.ToArray());
  
                  TaskList.RemoveAll(x =&gt; x.IsCompleted);
  
                  Console.WriteLine("Task complete! Launching new...");
                  CreateJobs();
              }
          }
  
  
          public async Task CreateJob()
          {
              Console.WriteLine("Thread {0} - Start", Thread.CurrentThread.ManagedThreadId);
  
              // read in results from sql
  
              await Task.Delay(10000);
              Console.WriteLine("Thread {0} - End", Thread.CurrentThread.ManagedThreadId);
          }
  
  
          public void CreateJobs()
          {
              while (TaskList.Count &lt; MaxJobs)
              {
                  TaskList.Add( CreateJob() );
              }
          }
      }
  }
  </code></pre>
  
  <p>Output:</p>
  
  <pre><code>&gt; Thread 1 - Start
  Thread 1 - Start
  Thread 1 - Start
  Thread 1 - Start
  Thread 1 - Start
  Thread 4 - End
  Thread 5 - End
  Thread 4 - End
  Thread 6 - End
  Thread 8 - End
  Task complete! Launching new...
  Thread 1 - Start
  Thread 1 - Start
  Thread 1 - Start
  Thread 1 - Start
  Thread 1 - Start
  Thread 7 - End
  Thread 6 - End
  Thread 5 - End
  Thread 4 - End
  Thread 8 - End
  Task complete! Launching new...
  Thread 1 - Start
  Thread 1 - Start
  Thread 1 - Start
  Task complete! Launching new...
  Thread 1 - Start
  Thread 1 - Start
  Thread 10 - End
  Thread 9 - End
  Task complete! Launching new...
  Thread 1 - Start
  Thread 7 - End
  Thread 4 - End
  Thread 6 - End
  Task complete! Launching new...
  Thread 1 - Start
  Thread 1 - Start
  Task complete! Launching new...
  Thread 1 - Start
  Thread 1 - Start
  </code></pre>