Свойства блокировки на уровне файлов. Настройки

Я довольно новичок в C# и хотел сохранить некоторые настройки. Мое приложение должно иметь возможность запускать несколько экземпляров, поэтому возможно несколько одновременных записей в user.config файл. В результате чего файл конфигурации стал поврежденным. Поэтому мне интересно, есть ли какие-либо блокировки на уровне файлов при их сохранении.

Пытался взглянуть на исходный код для .Save и это, кажется, сводится к вызову интерфейса IInternalConfigHost.OpenStreamForWriting, Но это интерфейс, поэтому я не могу легко ответить на этот вопрос самостоятельно.

Несколько обновил формулировку.

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

2 ответа

Решение

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

Что вы можете сделать, это использовать класс Mutex для синхронизации доступа из нескольких экземпляров. Вы можете проверить этот ответ о том, как сделать это правильно.

Тем не менее, одна вещь, о которой вам нужно подумать: если один из ваших экземпляров обновляет файл конфигурации, должны ли другие быть уведомлены и перезагрузить его, чтобы обеспечить согласованное поведение?

Вы можете использовать объект блокировки мьютекса. Это предотвращает одновременный доступ к общему объекту между многопоточностью и многопроцессорностью.

Ссылка на следующей странице. http://derpturkey.com/c-cross-process-synchronization/

Другие вопросы по тегам