title: High memory usage with WebClient DownloadData
body: <p>I have an issue memory not being released after webclient has downloaded data so I tested with the below sample code and it also happens with it. GC collects up to 10-20% of it but that still leaves way too much, I really have no idea what could be wrong as it appears nobody else is having problems with it.</p>
  <hr />
  <pre><code>public partial class Form1 : Form
  {
      public Form1()
      {
          InitializeComponent();
          list.Add(&quot;https://media1.giphy.com/media/Uwj2CxFJs8ZyM/giphy.gif&quot;);
          list.Add(&quot;https://media0.giphy.com/media/5Ut5IWqO2kfDU1FG8T/giphy.gif&quot;);
          list.Add(&quot;https://media1.giphy.com/media/Uwj2CxFJs8ZyM/giphy.gif&quot;);
          list.Add(&quot;https://media0.giphy.com/media/5Ut5IWqO2kfDU1FG8T/giphy.gif&quot;);
          list.Add(&quot;https://media1.giphy.com/media/Uwj2CxFJs8ZyM/giphy.gif&quot;);
          list.Add(&quot;https://media0.giphy.com/media/5Ut5IWqO2kfDU1FG8T/giphy.gif&quot;);
          list.Add(&quot;https://media1.giphy.com/media/Uwj2CxFJs8ZyM/giphy.gif&quot;);
          list.Add(&quot;https://media0.giphy.com/media/5Ut5IWqO2kfDU1FG8T/giphy.gif&quot;);
          list.Add(&quot;https://media1.giphy.com/media/Uwj2CxFJs8ZyM/giphy.gif&quot;);
          list.Add(&quot;https://media0.giphy.com/media/5Ut5IWqO2kfDU1FG8T/giphy.gif&quot;);
      }
  
      private List&lt;string&gt; list = new List&lt;string&gt;();
      public void DownloadThumb(string Url)
      {
          WebClient ThumbClient = new WebClient();
          ThumbClient.DownloadDataCompleted += DownloadFinished;
          ThumbClient.DownloadDataAsync(new Uri(Url));
      }
  
      private int donecount = 0;
      public void DownloadFinished(object sender, DownloadDataCompletedEventArgs e)
      {
          Image DownloadedImage;
          using (MemoryStream MemoryStreamTemp = new MemoryStream(e.Result))
          {
              DownloadedImage = Image.FromStream(MemoryStreamTemp);
          }
          DownloadedImage.Dispose();
          ((WebClient)sender).Dispose();
  
          donecount++;
          if (donecount == list.Count)
          {
              donecount = 0;
              button1.Enabled = true;
          }
      }
  
      private void button1_Click(object sender, EventArgs e)
      {
          button1.Enabled = false;
          foreach (string TempString in list)
          {
              DownloadThumb(TempString);
          }
      }
  
      private void button2_Click(object sender, EventArgs e)
      {
          GC.Collect();
      }
  }
  </code></pre>
  <p><a href="https://i.stack.imgur.com/ZDKOG.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ZDKOG.png" alt="enter image description here" /></a></p>