Advertisement
destr0y

Untitled

Dec 21st, 2019
520
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.68 KB | None | 0 0
  1. public static async void DownloadFiles(MainWindow w, IEnumerable<string> exfiles) // Ассинхронное скачивание файлов один за одним
  2. {
  3.     try
  4.     {
  5.         double size = 0; // Размер всех файлов
  6.         double downloaded_tmp = 0; // Сколько байт скачивающегося файла уже скачалось
  7.         double downloaded = 0; // Сколько байт из всех файлов скачалось
  8.         int progress; // Процент скачавшихся данных (0-100)
  9.  
  10.         foreach (var file in exfiles) // Проходим по списку и получаем размер всех файлов
  11.         {
  12.             size += GetFileSize(new Uri(Server.Url + file));
  13.         }
  14.  
  15.         using (var http = new WebClient())
  16.         {
  17.             http.DownloadProgressChanged += (s, e) =>
  18.             {
  19.                 downloaded_tmp = e.BytesReceived; // Сколько байт от скачивающегося файла скачалось
  20.                 progress = (int) ((downloaded + downloaded_tmp) / size *
  21.                                     100); // Получаем процент скачавшихся данных
  22.  
  23.                 if (progress == 100)
  24.                 {
  25.                     // Если все файлы скачались
  26.                 }
  27.             };
  28.  
  29.             http.DownloadFileCompleted += (s, e) => { downloaded += downloaded_tmp; };
  30.  
  31.             foreach (var file in exfiles)
  32.             {
  33.                 await http.DownloadFileTaskAsync(new Uri(Server.Url + file), file); // Скачивание файла
  34.             }
  35.         }
  36.     } catch { }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement