.NET 4.x Как скачивать несколько файлов через WebClient по очереди, через DownloadFileAsync - C#
Формулировка задачи:
Доброй ночи. Столкнулся с проблемой по скачиванию нескольких файлов друг за другом.
Фулл код как скачиваю:
И как вызываю (на примере 1 файла)
В итоге он мне начинает качать все файлы подряд, т.е. в несколько потоков.
Вопрос все таки такой: как мне дождаться скачивания 1 файла и начать качать 2й? Новый поток? Пробовал. Не двигается прогресс бар.
void DownloadMPQ(Uri u, string s) { WebClient web = new WebClient(); web.DownloadProgressChanged += new DownloadProgressChangedEventHandler(Download); web.DownloadFileCompleted += new AsyncCompletedEventHandler(DownComp); web.DownloadFileAsync(u, s); } void DownComp(object sender, AsyncCompletedEventArgs e) { NotificShow(String.Format("'{0}' скачан.", ThisFile)); } void Download(object sender, DownloadProgressChangedEventArgs e) { long q = e.TotalBytesToReceive / 1024; prgDownload.Properties.Maximum = (int)q; prgDownload.EditValue = e.BytesReceived / 1024; }
DownloadMPQ(new Uri("http://localhost/mp.mpq"), "mp.mpq");
Решение задачи: «.NET 4.x Как скачивать несколько файлов через WebClient по очереди, через DownloadFileAsync»
textual
Листинг программы
public async Task DownloadManyFiles(Dictionary<Uri, string> files) { WebClient wc = new WebClient(); wc.DownloadProgressChanged += (s, e) => progressBar1.Value = e.ProgressPercentage; foreach (KeyValuePair<Uri, string> pair in files) { await wc.DownloadFileTaskAsync(pair.Key,pair.Value);} wc.Dispose(); } private void button1_Click(object sender, EventArgs e) { Dictionary<Uri, string> dict = new Dictionary<Uri, string>(); dict.Add(new Uri("https://download.microsoft.com/download/4/E/3/4E38FD5A-8859-446F-8C58-9FC70FE82BB1/Express%2032BIT%20WoW64/SQLEXPR32_x86_RUS.exe"), "Firstfile.exe"); dict.Add(new Uri("https://download.microsoft.com/download/4/E/3/4E38FD5A-8859-446F-8C58-9FC70FE82BB1/Express%2032BIT/SQLEXPR_x86_RUS.exe"), "Secondfile.exe"); DownloadManyFiles(dict); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д