Дозакачка файла, если не докачался WebClient, DownloadFileAsync - C#
Формулировка задачи:
Здравствуйте!
Проблема в том, что при скачивании файла
modpack.zip
, он у меня скачивается не полностью и программа приступает к выполнению методаDownloadFileCompleted
, а этот метод должен срабатывать только когда zip архив полностью скачался. Как мне сделать дозакачку файла, если не дозакачался он еще? У моего знакомого скорость инета высокая (30-50 мбит), так вот у него архив нормально скачивается (zip) быстро и нормально распаковывается, а у меня скорость 6-8 мбит у меня вот не дозакачивается.wc.DownloadFileAsync(new Uri(url), save_path + name); //скачиваем zip архив (500мб) wc.DownloadProgressChanged += (s, d) => { progressBar1.Value = d.ProgressPercentage; //при скачивании будет изменяться ProgressBar }; wc.DownloadFileCompleted += (s, d) => { string zipPath = save_path + @"\modpack.zip"; // где находится наш скачанный zip архив string extractPath = save_path + @"\multiplayer_c\custom"; // куда распаковать скачанный zip архив DirectoryInfo directoryinfo = new DirectoryInfo(extractPath); //директорию куда следует распаковать if (directoryinfo.Exists) directoryinfo.Delete(true); // если вдруг директория куда следует распаковать что-то содержит, то удалить ВСЁ и распаковать ZipFile.ExtractToDirectory(zipPath, extractPath); // сам метод распаковки MessageBox.Show("МодПак установился успешно!", "Успешно", MessageBoxButtons.OK, MessageBoxIcon.Warning); };
Решение задачи: «Дозакачка файла, если не докачался WebClient, DownloadFileAsync»
textual
Листинг программы
String version = "4"; // Объект запроса HttpWebRequest rew = (HttpWebRequest)WebRequest.Create("https://artifactgg.ru/download/versionlauncher.txt"); // Отправить запрос и получить ответ try { using (HttpWebResponse resp = (HttpWebResponse)rew.GetResponse()) { Stream str = resp.GetResponseStream(); int ch; String message = ""; for (int i = 1; ; i++) { ch = str.ReadByte(); if (ch == -1) break; message += (char)ch; } if (message == version) { InitializeComponent(); } else if (message != version) { InitializeComponent(); label1.Visible = false; label2.Visible = false; label3.Visible = false; button1.Visible = false; progressBar1.Visible = false; label4.Visible = true; linkLabel1.Visible = true; button2.Visible = false; label5.Visible = false; } str.Flush(); str.Close(); rew.Abort(); resp.Close(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д