I added an event handler to the WebClient\'s DownloadProgressChanged event, but it never seems to fire. The file successfully downloads, but without having its
If you want to use WebClient synchronously, while getting progress updates you can rely on this method detailed here
http://alexfeinberg.wordpress.com/2014/09/14/how-to-use-net-webclient-synchronously-and-still-receive-progress-updates/
public void DownloadFile(Uri uri, string desintaion)
{
using(var wc = new WebClient())
{
wc.DownloadProgressChanged += HandleDownloadProgress;
wc.DownloadFileCompleted += HandleDownloadComplete;
var syncObject = new Object();
lock(syncObject)
{
wc.DownloadFileAsync(sourceUri, destination, syncObject);
//This would block the thread until download completes
Monitor.Wait(syncObject);
}
}
//Do more stuff after download was complete
}
public void HandleDownloadComplete(object sender, AsyncCompletedEventArgs args)
{
lock(e.UserState)
{
//releases blocked thread
Monitor.Pulse(e.UserState);
}
}
public void HandleDownloadProgress(object sender, DownloadProgressChangedEventArgs args)
{
//Process progress updates here
}