title: Remove completed tasks from List<Task>
body: <p>I am using TPL in .net 4.0 to work with multiple tasks asynchronously.
  The following is the code snippet:</p>
  
  <pre><code>List&lt;Task&gt; TaskList = new List&lt;Task&gt;();
  while (some condition)
  {
      var t = Task.Factory.StartNew( () = &gt; doSomething () );
      TaskList.Add(t)
  }
  
  //Wait for all tasks to complete
  Task.WaitAll(TaskList.toArray());
  </code></pre>
  
  <p>If the while loop runs for a long time, what happens to the size of "TaskList"?
  I am concerned that this is going to take up significant memory if the while loop runs for a couple of days. 
  Do I have to remove completed tasks from that list or do they get disposed automatically?</p>
  
  <p>Is there any other way to optimize this in terms of memory?</p>