AVollane
@AVollane
Начинающий C# разработчик

Как получить информацию из файла конфигурации?

Здравствуйте! В приложении требуется получить информацию из файла конфигурации (.config). Для этого использую System.Configuration, а так как решил для удобства разбить конфигурацию на несколько файлов, создал статический класс ApplicationConfiguration. При помощи этого класса можно получить информацию из определённого файла конфигурации:
// Contains objects of application configuration
    public static class ApplicationConfiguration
    {
        public static Configuration SettingsConfiguration { get; } = 
            ConfigurationManager.OpenMappedExeConfiguration(
                new ExeConfigurationFileMap { ExeConfigFilename = Environment.CurrentDirectory + @"Configuration\settingsConfiguration.config" }, ConfigurationUserLevel.None);

        public static Configuration SettingsWindowConfiguration { get; } =
            ConfigurationManager.OpenMappedExeConfiguration(
                new ExeConfigurationFileMap { ExeConfigFilename = @"Configuration\settingsWindowConfiguration.config" }, ConfigurationUserLevel.None);
    }


В папке приложения создана папка Configuration, в ней два файла settingsConfiguration.config и settingsWindowConfiguration.config

settingsConfiguration.config (т.к. пока используется только он):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<appSettings>
		<add key="AutoUpdateProcesses" value="false"/>
	</appSettings>
</configuration>


Прям сразу при запуске приложения, класс ApplicationConfiguration задействуется в модели представления главного окна, из него получаем объект settings, при помощи свойства в операторе if:
Configuration settings = ApplicationConfiguration.SettingsConfiguration;
        public MainVM()
        {
            if(settings.AppSettings.Settings["AutoUpdateProcesses"].Value == "true")
            {
                // We perform the update operation in a separate thread
                Task.Run(() =>
                {
                    // Endless cycle
                    while (true)
                    {
                        Processes = Process.GetProcesses().ToList();
                        Thread.Sleep(4000); // Updating every 4 seconds
                    }
                });
            }
        }


Но, при запуске выбрасывается следующее исключение:
605ceaf17af02986701836.png

Я не могу понять, в чём причина. Заранее спасибо за помощь.
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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