C# version here.
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.
