[英]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.