Как работает LocalSettings?
Я борюсь с вопросом - как на самом деле работает LocalSettings. Это класс ApplicationDataContainer, но это какой-то файл? Наверное, да, но когда это сохранено?
Например, мы можем сохранить некоторые данные, как это:
localSettings.Values["exampleSetting"] = "Hello Windows";
но сохраняется ли он в файл сразу после добавления / изменения значения или он сохраняется где-то в памяти и сохраняется, когда приложение приостанавливается / прекращается?
И основная цель вопроса:
- Нужно ли защищать приведенную выше строку кода, например, с помощью Mutex при доступе к LocalSettings из параллельных процессов / потоков?
- Есть ли шанс, что мы можем получить исключение при сохранении LocalSettings одновременно?
1 ответ
LocalSettings (и RoamingSettings) предоставляют модель доступа, которая концептуально эквивалентна реестру Windows. Операции записи являются синхронными, атомарными и реализуют семантику последних писателей. Любые изменения, внесенные в настройки, сразу же становятся доступны другим потокам.
Примечание. Если вам нужно создать элементарный параметр, содержащий несколько пар ключ / значение, вы должны использовать класс ApplicationDataCompositeValue.