You're disposing of the client before it's finished downloading. Don't do that.
You should only dispose of the WebClient
when either there's an error or it's completed, which you'd discover by the events that WebClient
raises (or using DownloadFileTaskAsync
in .NET 4.5, and awaiting the resulting task).