I have developed a fully-fledged HTTPDowloader with important feature — continue interrupted downloads.
It is a console application (in my opinion, the best approach for such task as it can be easily used in batch), but adaptation for UI will be very easy (always use a separate thread(s) for downloads).
Here is the complete source code:
how to download a file from internet[
^].
(Note: a biggest part of this code is dedicated to naming of the output file. Input parameters are URL and output file; if output file name is not specified, it is constructed based on URL in unique and uniform manner; the naming is important for continuation of downloads interrupted during previous run-time.)
—SA