У меня есть идея для программы на C #, которая работает в основном как Windows Explorer.Цель состоит в том, чтобы отобразить все файлы и папки и показать конкретную информацию для каждого из них.Одна из функций, которые я планирую, состоит в том, чтобы определять размеры папок, которые Explorer не может сделать.
Моя идея алгоритма состоит в том, чтобы накапливать размеры всех файлов в конкретной папке.Тем не менее, я боюсь проблем с производительностью.Например, для отображения размеров всех папок C: я должен рассмотреть все файлы на всем диске.Это, вероятно, займет некоторое время, и, следовательно, вычисление не может быть выполнено каждый раз, когда пользователь переключается на другую папку или обратно.
Так что я бы хотел кешировать некоторые размеры.Однако, когда файлы изменяются, добавляются или удаляются, данные кэша устаревают.Но я не хочу отслеживать все изменения файлов, пока программа не запущена.
Есть ли какой-нибудь способ узнать, обновлен ли кэш, например, путем получения какой-либо контрольной суммы, которая нене требует расчета всех размеров снова?Есть ли другой эффективный способ памяти и ЦП, чтобы узнать, изменились ли размеры файлов с момента последнего расчета?Или есть еще одна возможность?