Блокировка файла XML во время чтения и записи в ASP.NET - PullRequest
0 голосов
/ 21 декабря 2011

У меня довольно много пользователей, обращающихся к одному и тому же XML-файлу. Код ниже - лучший способ получить доступ к файлу? Если нет, что является предпочтительным? Я не хочу, чтобы пользователь получал "ошибку в использовании файла" или что-то в этом роде.

private readonly XDocument _xmlDocument;

public SubCategoriesParser(string filePath)
{
    if (filePath != null)
        _xmlDocument = XDocument.Load(filePath);
}

Ответы [ 2 ]

3 голосов
/ 21 декабря 2011

Вы можете использовать класс System.Threading.ReaderWriterLock для решения вашего сценария. Этот класс поддерживает одного писателя и несколько читателей. По приведенной ссылке есть хороший пример.

1 голос
/ 21 декабря 2011

Вы можете синхронизировать доступ к файлу с блокировкой или (если у вас есть такое соотношение чтения-записи, которое делает это целесообразным) ReaderWriterLockSlim.

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

В противном случае, по крайней мере, вам нужно заблокировать только Save и Load, чтобы избежать повреждения файла. Однако вам следует быть очень осторожным, чтобы сделать блокировки более тонкими, так как сохранения будут перезаписывать друг друга таким образом, что будут потеряны данные, которые не были бы потеряны, если бы вы синхронизировали всю операцию.

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