Программа хранит ряд настроек в xml-файле. Если в момента записи настройки отключается питание компьютера, содержимое файла пропадает (сам файл остается, но если открыть - он пустой). Появилась идея сохранять изменения во временный файл, а затем переносить их в основной. Тогда, теоретически, должен повредиться только один из файлов при сбросе питания. Но на деле пропадает содержимое обоих файлов. Причина в коде? Или сам подход неправильный? Сохранение временного файла и его копирование в файл-оригинал представлено ниже:
StreamWriter streamWriter = new StreamWriter(FileName_);
BlockFile.WaitOne();
xmlDoc.Save(streamWriter);
BlockFile.Release();
streamWriter.Dispose();
File.Copy(FileName_, FileName, true);
Рекомендую сделать так:
Если вы выполните этот алгоритм, то при любом сбое вы будете уверены настройки не пропадут.
Доброго времени суток! Последовательность должна быть такой:
Открытие рабочего файла
1) Проверяете существование ~settings.xml
2.1) Если существует то открываете его с доступом на чтение
2.2) Открываете файл settings.xml с доступом на запись
2.3) Записываете содержимое файла ~settings.xml в settings.xml
2.4) Закрываете файлы. Удаляете ~settings.xml (далее работает по пунктам следующим пунктам)
3) Если файл ~settings.xml не существует, то открываете файл settings.xml с доступом на чтение
4) Создаете файл ~settings.xml и открываете с доступом на запись
5) Работаете с файлом ~settings.xml
Сохранение результатов
1) Закрываете оба файла
2) Открываете файл ~settings.xml с доступом на чтение и файл settings.xml с доступом на запись
3) Перезаписываете файл settings.xml содержимым файла ~settings.xml
4) Закрываете оба файла. Удаляете ~settings.xml
Этот алгоритм должен предотвратить полную потерю данных
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники