Когда сохранять настройки?

Не настоящий вопрос, но связанный с этим: мое приложение сериализует свои настройки в изолированное хранилище в событии закрытия основных форм. Он работает хорошо, за исключением некоторых крайних случаев (например, 1% отключений приводит к пустому, сломанному файлу). Ожидается ли это?

Теперь реальный вопрос: каков общий шаблон при работе с сериализацией в настольных приложениях C # или Java? Должен ли я ждать выхода приложения? Использовать таймер и сохранять сериализацию через определенные промежутки времени?


person user629926    schedule 21.01.2013    source источник
comment
Сохранение только при выходе ужасно. Нет ничего хуже, чем правильно настроить программу, а затем поддерживать ее работу в течение нескольких часов/дней, а затем потерять все настройки из-за сбоя системы и т. д.   -  person ThiefMaster    schedule 22.01.2013
comment
Недостатком сохранения при изменении является то, что ваше приложение может быть неправильно сконфигурировано таким образом, что его нельзя будет перезапустить. Это может свидетельствовать либо о нескольких именованных наборах параметров, либо о последнем известном хорошем наборе. В остальном я согласен с мудростью SO и официальным девизом Microsoft: экономьте рано, сохраняйте часто.   -  person HABO    schedule 22.01.2013


Ответы (2)


Вы должны сохранять каждый раз, когда меняются настройки, если только у вас нет большого объема.

Самая важная проблема здесь — поврежденные файлы. Вы должны сохранить во временный файл, а когда сериализация будет завершена, вы должны поменять местами файлы в быстрой атомарной операции. Если что-то пойдет не так, вы можете прочитать старую копию файла.

person Joe    schedule 21.01.2013

Я бы предложил сохранять настройки по мере их изменения как наиболее надежное решение, а также потенциально сохранять их при выходе. Если только вы не находитесь в какой-то сумасшедшей ситуации, когда настройки меняются в быстром темпе (но это маловероятно).

person Daniel Kelley    schedule 21.01.2013