Я обновляю некоторые устаревшие коды для более эффективного использования файлов .ini
для хранения параметров. В принципе, он кэширует все настройки внутри, как только они будут прочитаны, чтобы их можно было прочитать снова, не открывая файл. Перед использованием кеша я сравниваю время создания кэша с последним измененным временем файла и воссоздаю кеш с обновленным файлом. Это отлично работает, если пользователи не переименовывают файлы, потому что это действие не обновляет последнее измененное время.Как узнать, был ли файл переименован?
Так что, если я копирую мой app.ini
в app - copy.ini
, изменять app - copy.ini
вне моей программы, а затем удалить app.ini
и переименуйте копию app.ini
, моя программа теперь использует устаревший кэш. Даже если моя программа поймала удаление app.ini
и очистила кеш, она не пересобирала кеш, когда копия была переименована. Программа предназначена для работы в течение очень долгого времени без присмотра, поэтому я бы хотел избежать постоянного контроля над файлом - только проверьте его, как только мне нужно будет прочитать параметр.
Предположительно вы проверили, что это будет действительно добиться прироста производительности, что пользователи будут рассматривать целесообразны? – MarkJ
@MarkJ - Нет, еще нет. Я просто написал код кеширования и вскоре проведу тестирование производительности. Это было главным образом упражнение, чтобы переоценить себя с VB6, но если это приведет к повышению производительности, это потрясающе. Но мой главный вопрос заключался в обнаружении переименованных файлов - конкретное приложение является лишь примером. Наблюдатель за файлами, вероятно, решает проблему, но на самом деле не отвечает на вопрос. – dlras2
«NTFS задерживает обновление до последнего времени доступа к файлу на срок до одного часа после последнего доступа». Это связано с тем, что эти временные метки предназначены для атрибутов с низкой волатильностью для уменьшения накладных расходов файловой системы. Файлы INI не должны быть очень волевыми, что делает редактирование вручную внешне возможным. Если вам нужен более жесткий контроль над процессом, вы должны предоставить пользовательский интерфейс настроек, чтобы пользователи не изменяли напрямую. Затем вы можете использовать свои собственные временные метки высокой волатильности в данных, если это необходимо, контролируемым образом. Положитесь на кэширование файлов на системном уровне для повышения производительности. – Bob77