Лень читать? Смотри этот урок на нашем канале!
Доброго времени суток наш читатель! Сегодня мы рассмотрим урок по асинхронной загрузке! Это простой и очень эффективный метод подходящий, к примеру, для создания программы обновления или какого-нибудь лоадера для игры или ещё чего-нибудь!
Асинхронный метод, в отличии от обычного не требует перерисовки и обновления формы, что не приводит к зависанию главного окна. Теперь перейдем к том, что нам потребуется:
Все тот же Microsoft Visual Studio 2013 и язык программирования C#
Создаем проект Windows Forms с .Net FrameWork'ом 3.5 и даем ему любое название на Ваше усмотрение.
На форму добавляем следующие элементы:
- TextBox - 1шт
- ProgressBar - 1шт
- Button - 1шт
Должно получиться следующее:
В проекте мы изменили название всех элементов кроме ProgressBar. Теперь открываем код программы и первым делом добавляем библиотеку:
Теперь создаем нашу функцию загрузки:
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!
|