E>>Насколько криво так делать? Как это лучше сделать? Есть еще библиотека FX Parallelis кажется... она вроде будет в 2010 студии... А сейчас ее скачать нельзя, насколько я понимаю?
_>Скачать можно http://en.wikipedia.org/wiki/Parallel_FX_Library , только что там с лицензией не знаю, можно это в продакшене использовать или нет.
Поддерживаю. Благодаря либе можно код свести к такому виду:
// Библиотека запустит не более 4-х потоков. Больше информации в хелпе Parallel Extentions.
var taskManager = new TaskManager(new TaskManagerPolicy(4, 4, 1)); // 4 - это Ваше кол-во потоков.
Parallel.ForEach(someClasses, someClass =>
{
DoSomething(someClass); // ваша обработка
}, taskManager);
Причём SomeClass может быть чем угодно, и не придётся городить в нём всякие защиты от одновременного доступа и пр.