Something similar may have been posted before but, regardless, the attached project demonstrates how to download a file asynchronously, i.e. on a secondary thread to maintain a responsive UI, while displaying progress with download speed and time remaining.
Note that the solution attached to this post was converted from the VB version using Instant C# from Tangible Software Solutions.
EDIT: I have made a small change to the project. Instant C# converted some event handler attachments and placed the code in the designer code file. This didn't stop the project running but those for the WebClient prevented the form displaying in the designer, because the 'downloader' field was not declared in that file. I moved those two lines out of the designer code file and into the Load event handler and the form will now display correctly in the designer.
Last edited by jmcilhinney; Jan 23rd, 2012 at 02:12 AM.