I have a List with items that I want to download. I use a for Loop to iterate the list.
For each item in this List I start a new Thread that references the item. My
if you're using .NET 4, I'd strongly suggest using Parallel.ForEach (potentially on downloadList.Reverse())
so, something like:
Parallel.ForEach(downloadList.Reverse(),
new ParallelOptions { MaxDegreeOfParallelism = 8 },
item => this.DownloadItem(item));
If you don't want the calling thread to block, you could QueueUserWorkItem this call, of course.