.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);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д