It does not appear that you need a loop at all.

You need to use the events and fire the code to remove the item from the list when the download has completed, check to see if there are still items in the list and if so fire the next download.

I do not see where a loop would be of any use here.