I have a collection of objects. I need to process each of these objects in separate threads in order one by one. A number of simultaneous threads should be fixed, say 4. What is the best way to do this given that I'm limited by .NET Framework of version 3.5?
EDIT: By "in order" I meant that at the beginning processing of the first object should start. Then while it is still processed the processing of second, third and fourth object starts. Fifth object will wait for any of these four objects processing to be finished. Etc. But, say, sixth object cannot be processed if fifth didn't. You may have noticed some of download managers works this way.