Как мне выполнить асинхронную загрузку нескольких файлов с помощью веб-клиента, но по одному?

Было на удивление сложно найти пример кода для загрузки нескольких файлов с использованием асинхронного метода класса webclient, но с загрузкой по одному.

Как я могу инициировать асинхронную загрузку, но подождать, пока первая не будет завершена до второй, и т. Д. В основном que.

(обратите внимание, что я не хочу использовать метод синхронизации из-за расширенной функциональности async.)

Приведенный ниже код запускает все мои загрузки сразу. (индикатор выполнения повсюду)

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());
        }
24
задан stormist 9 August 2011 в 07:08
поделиться