Свойства блокировки на уровне файлов. Настройки
Я довольно новичок в C# и хотел сохранить некоторые настройки. Мое приложение должно иметь возможность запускать несколько экземпляров, поэтому возможно несколько одновременных записей в user.config
файл. В результате чего файл конфигурации стал поврежденным. Поэтому мне интересно, есть ли какие-либо блокировки на уровне файлов при их сохранении.
Пытался взглянуть на исходный код для .Save
и это, кажется, сводится к вызову интерфейса IInternalConfigHost.OpenStreamForWriting
, Но это интерфейс, поэтому я не могу легко ответить на этот вопрос самостоятельно.
Несколько обновил формулировку.
В основном мне интересно, может ли файл user.config быть поврежден из-за нескольких одновременных записей в него из нескольких экземпляров моего приложения.
2 ответа
Если два или более экземпляров вашей программы попытаются записать в один и тот же файл конфигурации, вы получите исключения во время вызова .Save
Что вы можете сделать, это использовать класс Mutex для синхронизации доступа из нескольких экземпляров. Вы можете проверить этот ответ о том, как сделать это правильно.
Тем не менее, одна вещь, о которой вам нужно подумать: если один из ваших экземпляров обновляет файл конфигурации, должны ли другие быть уведомлены и перезагрузить его, чтобы обеспечить согласованное поведение?
Вы можете использовать объект блокировки мьютекса. Это предотвращает одновременный доступ к общему объекту между многопоточностью и многопроцессорностью.
Ссылка на следующей странице. http://derpturkey.com/c-cross-process-synchronization/