Ha sido sorprendentemente difícil encontrar un ejemplo de código de descarga de múltiples archivos usando el método asíncrono de la clase webcliente, pero descargando uno a la vez.¿Cómo descargo varios archivos usando webclient, pero de a uno por vez?
¿Cómo puedo iniciar una descarga asíncrona, pero esperar hasta que la primera termine hasta la segunda, etc. Básicamente una que.
(tenga en cuenta que no quiero utilizar el método de sincronización, debido a la mayor funcionalidad del método asíncrono.)
El código de abajo comienza todos mis descargas a la vez. (La barra de progreso es por todo el lugar)
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());
}
Usted puede estar interesado en esta pregunta relacionada: [Llamar a un método asíncrono en serie] (http://stackoverflow.com/questions/3909063/calling-an-asynchronous-method-serially) – Benjol