title: update config file without restart application
body: <p>I am trying to get around updating the config file without closing application. The problem is the im still reading cached version. I have a FileSystemWatcher which is not working. Any help appreciated</p>
  
  <pre><code>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
  
  
                  }
  
          }
  
      }
  </code></pre>