I'm writing a simple photo downloader application using IOC. There is a fairly straightforward list of steps. Get list of photos to download. Check this, Check that, then download. The download can be accomplished via FTP in some cases, and via http in others, and via a web service in others.
What I'm wondering, as I'm new to IOC land, is what is a good pattern to use to spin up 10 'download threads' using IOC best practices/design patterns.
I'm using Castle Windsor but could easily switch to StructureMap, or Spring, as I'm early in the process.
EDIT: To be clear, I understand how to create an IPhotoDownloader interface and then 3 concrete photodownloader classes, what I'm not clear on is how to control the threading and how to know when everything is done on all the threads and continue.
Second Edit in response to comments: As I understand it, it would be bad to directly reference a concrete class in an IOC application so if I wanted to, for instance, use ThreadPool.QueueUserWorkItem to multithread my downloader, how would I do that. Would I simply use the container to resolve the concrete class I want on each thread inside my thread start method? like:
void StartThead(){
PhotoRetriever retriever = container.Resolve<PhotoRetriever>();
}