Получение прогресса загрузки во время загрузки файла с использованием Webclient.Uploadfile - PullRequest
14 голосов
/ 11 июня 2009

У меня есть приложение, которое загружает файлы на сервер с помощью веб-клиента. Я хотел бы отобразить индикатор выполнения во время загрузки файла. Как мне добиться этого?

Ответы [ 2 ]

24 голосов
/ 11 июня 2009

WebClient.UploadFileAsync позволит вам сделать это.

WebClient webClient = new WebClient();
webClient.UploadFileAsync(address, fileName);
webClient.UploadProgressChanged += WebClientUploadProgressChanged;

...

void WebClientUploadProgressChanged(object sender, UploadProgressChangedEventArgs e)
{
        Console.WriteLine("Upload {0}% complete. ", e.ProgressPercentage);
}

Обратите внимание, что поток больше не будет блокироваться при загрузке, поэтому я рекомендую использовать:

 webClient.UploadFileCompleted += WebClientUploadCompleted;

...

 void WebClientUploadCompleted(object sender, UploadFileCompletedEventArgs e)
 {
     // The upload is finished, clean up
 }
2 голосов
/ 11 июня 2009

Добавьте ваш обработчик событий в WebClient.UploadProgressChanged и вызовите WebClient.UploadFileAsync.

См. Пример WebClient.UploadProgressChanged .

...