Дозакачка файла, если не докачался 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();
                }
 
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.571 из 5
Похожие ответы