16

I have an app that uploads files to server using the webclient. I'd like to display a progressbar while the file upload is in progress. How would I go about achieving this?

2 Answers 2

26

WebClient.UploadFileAsync will allow you to do this.

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

...

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

Note that the thread won't block on Upload anymore, so I'd recommend using:

 webClient.UploadFileCompleted += WebClientUploadCompleted;

...

 void WebClientUploadCompleted(object sender, UploadFileCompletedEventArgs e)
 {
     // The upload is finished, clean up
 }
5
  • Thanks. I'm working with multithreading, the file upload is already running on a different thread. So should I just use the Uploadfile method or the UploadfileAsync method? Commented Jun 11, 2009 at 17:12
  • You'll still need to UploadFileAsync I'm afraid, the thread will block on a call to UploadFile so those events will never get called. You can recreate your own blocking by setting a bool flag when you start the upload, reset it in uploadcomplete, then thread.sleep until the flag is cleared. Commented Jun 11, 2009 at 17:17
  • note: UploadProgressChanged event does not work well with UploadDataAsync method Commented Jul 3, 2017 at 16:18
  • How to pass parameters like FileName in WebClient? Commented Jul 11, 2019 at 5:29
  • Did you use any cancelAsyc in your method. if yes how did you use it in a way the cancel upload stop on the spot and not wait to end the upload process to cancel?
    – H_H
    Commented Dec 3, 2019 at 9:58
2

Add your event handler to WebClient.UploadProgressChanged and call WebClient.UploadFileAsync.

See the WebClient.UploadProgressChanged documentation for an example.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.