Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static async void DownloadFiles(MainWindow w, IEnumerable<string> exfiles) // Ассинхронное скачивание файлов один за одним
- {
- try
- {
- double size = 0; // Размер всех файлов
- double downloaded_tmp = 0; // Сколько байт скачивающегося файла уже скачалось
- double downloaded = 0; // Сколько байт из всех файлов скачалось
- int progress; // Процент скачавшихся данных (0-100)
- foreach (var file in exfiles) // Проходим по списку и получаем размер всех файлов
- {
- size += GetFileSize(new Uri(Server.Url + file));
- }
- using (var http = new WebClient())
- {
- http.DownloadProgressChanged += (s, e) =>
- {
- downloaded_tmp = e.BytesReceived; // Сколько байт от скачивающегося файла скачалось
- progress = (int) ((downloaded + downloaded_tmp) / size *
- 100); // Получаем процент скачавшихся данных
- if (progress == 100)
- {
- // Если все файлы скачались
- }
- };
- http.DownloadFileCompleted += (s, e) => { downloaded += downloaded_tmp; };
- foreach (var file in exfiles)
- {
- await http.DownloadFileTaskAsync(new Uri(Server.Url + file), file); // Скачивание файла
- }
- }
- } catch { }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement