Предполагая, что ваши миллионы файлов распределены по нескольким подкаталогам, и вы используете .NET 4.0, вы можете посмотреть на параллельные расширения.
Использование параллельного цикла foreach для обработки списка подчиненных-каталогов, может сделать вещи намного быстрее.
Новые параллельные расширения также намного безопаснее и проще в использовании, чем попытки многопоточности на более низком уровне.
Единственное, на что нужно обратить внимание, это убедиться, что вы ограничиваетеколичество параллельных процессов к чему-то разумному.