С десятками тысяч файлов вы не выиграете с лобовым нападением.Вы должны попытаться быть немного более креативным с решением.С таким количеством файлов вы, возможно, даже обнаружите, что за время, которое требуется для расчета размера, файлы изменились, и ваши данные уже неверны.
Итак, вам нужно перенести загрузку куда-нибудь еще.Для меня ответом будет использование System.IO.FileSystemWatcher
и написание некоторого кода, который следит за каталогом и обновляет индекс.
Для написания службы Windows, которую можно настроить для наблюдения занабор каталогов и запись результатов в общий выходной файл.Вы можете сделать так, чтобы служба пересчитывала размеры файлов при запуске, но затем просто следила за изменениями всякий раз, когда событие * Создать / Удалить / Изменено запускается System.IO.FileSystemWatcher
.Преимущество мониторинга каталога заключается в том, что вас интересуют только небольшие изменения, а это означает, что ваши цифры имеют более высокий шанс быть правильными (помните, что все данные устарели!)
Тогда единственное, что нужно посмотретьпотому что у вас будет несколько ресурсов, пытающихся получить доступ к выходному файлу.Так что просто убедитесь, что вы принимаете это во внимание.