5 / 5 / 5
Регистрация: 16.06.2013
Сообщений: 40
|
|
1 | |
DownloadFileAsync, классы и вывод состояний16.06.2013, 05:51. Показов 600. Ответов 1
Метки нет (Все метки)
Доброго времени суток.
Разбираюсь с DownloadFileAsync, для работы с ним сделал класс-обертку. Не знаю, как вывести за пределы класса состояния e.BytesReceived и e.TotalBytesToReceive. По аналогии как с ПрогрессБаром не получается. Хотелось бы, что бы как и с pBar обновлялось и отображалось, сколько байт уже закачано. В класс оборачиваю для того, чтобы в дальнейшем закачивать группу файлов. Код
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Net; namespace Downloader { public partial class Form1 : Form { AsyncDown d; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { d = new AsyncDown(progressBar1, "http://ссылка", @"сохранение"); } } public class AsyncDown { private WebClient webClient; private ProgressBar progressBar; private long state; private long total; public AsyncDown( string url, string path) { webClient = new WebClient(); StartDownload(url, path); } public AsyncDown(ProgressBar pBar, string url, string path) { webClient = new WebClient(); progressBar = pBar; StartDownload(url, path); } public void StartDownload(string url, string path) { webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); webClient.DownloadFileAsync(new Uri(url), path); } public void ProgressChanged(object sender, DownloadProgressChangedEventArgs e) { progressBar.Value = e.ProgressPercentage; state = e.BytesReceived; total = e.TotalBytesToReceive; } private void Completed(object sender, AsyncCompletedEventArgs e) { } } }
0
|
16.06.2013, 05:51 | |
Ответы с готовыми решениями:
1
DownloadFileAsync завершает цикл WebClient.DownloadFileAsync / Требуется ссылка на объект WebClient.DownloadFileAsync() - скачивание по непрямой ссылке Прерывание соединения при загрузке DownloadFileAsync |
5 / 5 / 5
Регистрация: 16.06.2013
Сообщений: 40
|
|
17.09.2013, 06:34 [ТС] | 2 |
Нашел для себя решение - через Invoke обращаюсь напрямую к месту, где нужно обновить данные. Возня с дополнительным классом оказалась избыточной.
Вопрос решен.
0
|
17.09.2013, 06:34 | |
17.09.2013, 06:34 | |
Помогаю со студенческими работами здесь
2
Дозакачка файла, если не докачался WebClient, DownloadFileAsync Асинхронная загрузка файлов методом WebClient.DownloadFileAsync DownloadFileAsync: как определить, какой файл сейчас скачивается WebClient.DownloadFileAsync() Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |