Прогресс-бар и веб-клиент - PullRequest
4 голосов
/ 13 ноября 2010

У меня есть событие, которое занимает около 10-30 секунд, а именно: загрузка информации со страницы (с довольно большим трафиком), ее изменение, а затем сохранение ее где-то на диске с помощью WebClient.Поскольку это занимает очень много времени, я хочу добавить индикатор выполнения или сделать метку обновления (которая говорит что-то вроде обновления ..), чтобы указать прогресс.

Может кто-нибудь подсказать мне, как я буду делатьэтот?Есть ли в WebClient какое-либо событие, которое я могу использовать для этого?

1 Ответ

20 голосов
/ 13 ноября 2010

Если вы пишете клиентское приложение Windows Forms (не серверный компонент ASP.NET), показать ход загрузки WebClient можно следующим образом:

WebClient webClient = new WebClient();
webClient.DownloadProgressChanged += (s, e) =>
{
    progressBar.Value = e.ProgressPercentage;
};
webClient.DownloadFileCompleted += (s, e) =>
{
    progressBar.Visible = false;
    // any other code to process the file
};
webClient.DownloadFileAsync(new Uri("http://example.com/largefile.dat"),
    @"C:\Path\To\Output.dat");

(progressBar - это идентификатор объекта ProgressBar в вашей форме.)

...