ZombieVDK

Март 10 Автор 
Опубликовано в Уроки по C#

Урок №5 - Асинхронная загрузка из интернета

Оцените материал
(0 голосов)
Comment
Доброго времени суток наш читатель! Сегодня мы рассмотрим урок по асинхронной загрузке! Это простой и очень эффективный метод подходящий, к примеру, для создания программы обновления или какого-нибудь лоадера для игры или ещё чего-нибудь!

Лень читать? смотри на YouTube!

Асинхронный метод, в отличии от обычного не требует перерисовки и обновления формы, что не приводит к зависанию главного окна. Теперь перейдем к том, что нам потребуется: Все тот же 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!


BLOG COMMENTS POWERED BY DISQUS
11 Последнее изменение Пятница, 10 Март 2017
ZombieVDK Admin

Администратор портала zombievdk.ru