Как заставить exe читать измененные пользовательские настройки во время выполнения в C#

Я создал пользовательские настройки с использованием Visual Studio 2010, как показано ниже

Client.exe.config

 <userSettings>
        <Client.Properties.Settings>
            <setting name="ParamValue" serializeAs="String">
                <value>OFF</value>
            </setting>
        </Client.Properties.Settings>
    </userSettings>

Однако, если я изменю значение во время выполнения с "OFF" на "ON", приложение все равно получит доступ к старому значению. Но если я закрою приложение и открою снова, тогда оно прочитает обновленное значение.

Есть ли способ заставить exe-файл читать обновленные пользовательские настройки во время выполнения.

2 ответа

Решение

Класс ApplicationSettingsBase имеет метод Reload, который вы можете использовать для перезагрузки настроек с диска.

Properties.Settings.Default.Reload();
// Properties.Settings.Default.ParamValue will be reloaded from the file on disk.

Вы не указали, как вы меняли настройки, но стоит отметить, что если вы обновите настройки "Пользователь" с помощью метода "Сохранить" экземпляра настроек, "Обновить" больше не будет сбрасывать значение, если сохраненное значение отличалось от дефолт. Это связано с тем, что настройки "Пользователь" записываются в файл настроек в папке профиля пользователя, и после того, как они будут сохранены, вам придется обновить эту версию файла, а не ту, которая находится в папке bin для вашего приложения.

В частности, настройки "Пользователь", которые сохраняются обратно на диск с помощью метода " Сохранить", записываются в следующую папку.

%USERPROFILE%\AppData\Local\<YourAppName>\<MangledName>\<Version>\user.config

Если вы хотите сбросить ваши настройки обратно к значению по умолчанию, которое вы определили в вашем App.config, используйте метод Reset.

Properties.Settings.Default.Reset();
// Properties.Settings.Default.ParamValue will be reset to the default.

Одним из подходов будет считывание настроек в загружаемом объекте. Используйте этот объект как хотите, обновляя значения при необходимости. Затем при закрытии приложения запишите значения объекта обратно в файл конфигурации.

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