Изменение в потребностях AppSettings перезапускает мое Приложение, как я могу избежать?

Вот быстрый взлом для демонстрации методов, чтобы сделать то, что Вы хотите.

#include <stdio.h>      /* printf */
#include <string.h>     /* strcat */
#include <stdlib.h>     /* strtol */

const char *byte_to_binary(int x)
{
    static char b[9];
    b[0] = '\0';

    int z;
    for (z = 128; z > 0; z >>= 1)
    {
        strcat(b, ((x & z) == z) ? "1" : "0");
    }

    return b;
}

int main(void)
{
    {
        /* binary string to int */

        char *tmp;
        char *b = "0101";

        printf("%d\n", strtol(b, &tmp, 2));
    }

    {
        /* byte to binary string */

        printf("%s\n", byte_to_binary(5));
    }

    return 0;
}
10
задан shahjapan 10 August 2009 в 12:47
поделиться

3 ответа

Вы можете попробовать вызвать

ConfigurationManager.RefreshSection("appSettings")
, чтобы обновить раздел AppSettings файла с диска. Как только они будут обновлены, вы сможете прочитать новые значения.

Я только что протестировал это, и он действительно работает.

23
ответ дан 3 December 2019 в 15:35
поделиться

В качестве альтернативы, вы можете создать синглтон «Параметры», чтобы сохранять настройки вашего приложения и выполнять чтение / запись за вас. После загрузки изменение .config не требует перезагрузки, вы просто устанавливаете свойство в синглтоне и вызываете свой метод .Save ().

Версия «времени выполнения» ваших настроек находится в синглтоне, читать не нужно с диска.

3
ответ дан 3 December 2019 в 15:35
поделиться

Не используйте ConfigurationManager для чтения настроек, вместо этого используйте:

        System.Configuration.ConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile).AppSettings.Settings["value"];
1
ответ дан 3 December 2019 в 15:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: