title: How do I Async download multiple files using webclient, but one at a time?
body: <p>It has been surprisingly hard to find a code example of downloading multiple files using the webclient class asynchronous method, but downloading one at a time. </p>
  
  <p>How can I initiate a async download, but wait until the first is finished until the second, etc. Basically a que.</p>
  
  <p>(note I do not want to use the sync method, because of the increased functionality of the async method.)</p>
  
  <p>The below code starts all my downloads at once. (the progress bar is all over the place)</p>
  
  <pre><code>private void downloadFile(string url)
          {
              WebClient client = new WebClient();
  
              client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
              client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);
  
              // Starts the download
              btnGetDownload.Text = "Downloading...";
              btnGetDownload.Enabled = false;
              progressBar1.Visible = true;
              lblFileName.Text = url;
              lblFileName.Visible = true;
              string FileName = url.Substring(url.LastIndexOf("/") + 1,
                              (url.Length - url.LastIndexOf("/") - 1));
               client.DownloadFileAsync(new Uri(url), "C:\\Test4\\" + FileName);
  
          }
  
          void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
          {
  
          }
  
          void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
          {
              double bytesIn = double.Parse(e.BytesReceived.ToString());
              double totalBytes = double.Parse(e.TotalBytesToReceive.ToString());
              double percentage = bytesIn / totalBytes * 100;
              progressBar1.Value = int.Parse(Math.Truncate(percentage).ToString());
          }
  </code></pre>