Я пытаюсь обойти обновление файла конфигурации без закрытия приложения. Проблема заключается в том, что я все еще читаю кешированную версию. У меня есть 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
}
}
}
Разве сложно переместить настройки конфигурации в отдельный файл/другое хранилище? – walther
im думает иметь текстовый файл отдельно для конфигурации, читать и писать url без проблем кеширования. –