Главная » 2016 » Июнь » 28 » Урок №5 - Асинхронная загрузка из интернета!
11:47
Урок №5 - Асинхронная загрузка из интернета!
Лень читать? Смотри этот урок на нашем канале!
Доброго времени суток наш читатель! Сегодня мы рассмотрим урок по асинхронной загрузке! Это простой и очень эффективный метод подходящий, к примеру, для создания программы обновления или какого-нибудь лоадера для игры или ещё чего-нибудь!
Асинхронный метод, в отличии от обычного не требует перерисовки и обновления формы, что не приводит к зависанию главного окна. Теперь перейдем к том, что нам потребуется:
Все тот же Microsoft Visual Studio 2013 и язык программирования C#

Создаем проект Windows Forms с .Net FrameWork'ом 3.5 и даем ему любое название на Ваше усмотрение.



На форму добавляем следующие элементы:
  • TextBox - 1шт
  • ProgressBar - 1шт
  • Button - 1шт
Должно получиться следующее:

В проекте мы изменили название всех элементов кроме ProgressBar. Теперь открываем код программы и первым делом добавляем библиотеку:

 

using System.Net;


Теперь создаем нашу функцию загрузки:

 private void downloading()
        {
            WebClient webload = new WebClient();
webload.DownloadFileCompleted+=new AsyncCompletedEventHandler(Completed);
webload.DownloadProgressChanged+=new DownloadProgressChangedEventHandler(ProgressChanged);
webload.DownloadFileAsync(new Uri("URL на скачивание файла"), "egais.exe");
        }

Сначала мы создаем новый WebClient и называем его webload, после чего создаем 3 события:

  • webload.DownloadFileCompleted+=new AsyncCompletedEventHandler(Completed); - оно будет происходит при завершении скачивания
  • webload.DownloadProgressChanged+=new DownloadProgressChangedEventHandler(ProgressChanged); - Событие при прогрессе скачивания, может отображать количество скаченных байтов или проценты
  • webload.DownloadFileAsync(new Uri("URL на скачивание файла"), "ИмяФайла.Расширение"); - Событие скачивания, сначала задается ссылка на скачивание, а затем путь и имя файла.
Дальше мы пишем функции на наши события, начнем с ProgressChanged :

 

private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            progressBar1.Value = e.ProgressPercentage;
            loadbox.Text = "Загружено байт : " + e.BytesReceived;
        }

 

 

Данная функцию при событии прогресса будет делать следующее:

  • Значение ProgressBar1 будет изменяться в процентах и заполняться по мере нарастания (от 0 до 100)
  • В текстбоксе будет выведено сообщение с количеством байт, которые уже загрузились. 
Далее описываем события Completed :
 

private void Completed (object sender, AsyncCompletedEventArgs e)

        {

            if (e.Error != null)

            {

                MessageBox.Show(e.Error.Message);

            }

            else

            {

                loadbox.Text = "Скачивание завершено!";

            }

        }

 

В этой функции все просто : Если ошибка не пустая, то выводим сообщение с ошибкой, в противном случае пишем в текстбоксе, что скачивание завершено. В конце прописываем функцию в кнопку:
 

private void download_Click(object sender, EventArgs e)
        {
            downloading();
        }

 


Проверяем, и смотрим, что у нас произошло удачное скачивание!
   
Всем спасибо за внимание! С вами был Евгений ZombieVDK!
 
Категория: Уроки по C# | Просмотров: 1024 | Добавил: bowxdlal
Всего комментариев: 0
avatar