проблема больше в "сборщике мусора" в NET 3.5. Он однопоточный и притормаживает остальные потоки, когда работает. в NET 4.0 сборщик мусора работает параллельно оснвной программе.