繁体   English   中英

更新配置文件而不重启应用程序

[英]update config file without restart application

我试图在不关闭应用程序的情况下更新配置文件。 问题是即时阅读缓存版本。 我有一个不起作用的FileSystemWatcher。 任何帮助赞赏

public partial class ChangeURL : Form
{

    Service ser = new Service();
    Configuration config =
        ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);



    public ChangeURL()
    {
        InitializeComponent();
        textBox1.Text = ser.Url;
        start();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        changeSettings();
        this.Close();
    }
    public void changeSettings()
    {

        KeyValueConfigurationCollection settings = config.appSettings.Settings;

        try
        {
            ConfigurationManager.RefreshSection("appSettings");
            settings["client_postCodeRef_Service"].Value = textBox1.Text;
            ser.Url = settings["client_postCodeRef_Service"].Value;
            config.Save(ConfigurationSaveMode.Modified);


        }
        catch (ConfigurationErrorsException e)
        {
            MessageBox.Show("[Exception error: {0}]",
                e.ToString());
        }



     } // end change settings
                public void onChange(object source, FileSystemEventArgs e) 
                { 
                    ConfigurationManager.RefreshSection("appSettings"); 
                }
                public void start()
                {
                    FileSystemWatcher fileWatcher = new FileSystemWatcher();

                    if (fileWatcher == null)
                    {
                        string path = Path.GetDirectoryName(config.FilePath);
                        string filename = Path.GetFileName(config.FilePath);

                        fileWatcher = new FileSystemWatcher();
                        fileWatcher.Path = path;
                        fileWatcher.Filter = filename;
                        fileWatcher.NotifyFilter = (NotifyFilters.CreationTime | NotifyFilters.FileName);
                        fileWatcher.Changed += onChange;
                        fileWatcher.EnableRaisingEvents = true;

                    } // endif


                }

        }

    }

只需调用ConfigurationManager.RefreshSection("appSettings"); 在调用appConfig.AppSettings.Settings["myConfigData"].Value; 这将强制应用程序读取新的和更改的设置。 否则,ConfigurationManager固有地缓存所有值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM