одновременное редактирование в XML-файл в C # - PullRequest
2 голосов
/ 23 ноября 2010

Я работаю над приложением, которое читает и вносит изменения в XML-файл, но использует методы классов XDocument Load () и Save (). Если запущено другое приложение или другой экземпляр моего приложения, то один документ может потенциально перезаписать изменения, сделанные другим, если он находится в памяти. Одновременно работающие программы никогда не будут редактировать один и тот же раздел файла XML одновременно. Как лучше всего решить эту проблему? Должен ли я просто выполнить Load прямо перед внесением каждого изменения или есть более элегантный подход?

Ответы [ 2 ]

3 голосов
/ 23 ноября 2010

Лучшим решением было бы не использовать XML.

Использовать (небольшую) базу данных.

Использование любого типа текстового файла в многопользовательской ситуации достаточно сложно, и фактТо, что он для разных секций может быть использован только прибыльно, если у вас есть фиксированная длина и (следовательно) записи с фиксированной позицией (строки).XML не обеспечивает этого.

Выполнение загрузки перед редактированием только приведет к тому, что проблемы будут появляться реже.Всегда есть вероятность, что изменения будут потеряны, у вас будут гоночные условия на уровне файловой системы.Чтобы это работало, вы должны использовать схему с блокировкой файлов.Для этого вам понадобится дополнительный файл.

0 голосов
/ 23 ноября 2010

Вы говорите о том, что несколько процессов могут изменять файл. Если вы хотите сохранить файл вместо того, чтобы помещать эти данные в общее хранилище (MS SQL), вам необходимо реализовать мьютекс, чтобы гарантировать, что только одно приложение может получить доступ к файлу в любой момент времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...