更改AppSettings需要重新启动我的应用程序,我该如何避免?

10

我正在使用C# .NET 2.0 Windows应用程序。

我正在使用app.config来存储我的应用程序设置。

但是在运行时更改AppSettings不会反映出来,需要重新启动应用程序。

如何避免这种情况。

这是我用来读写应用程序设置的代码片段。

我是这样读取设置的:

string temp = ConfigurationManager.AppSettings.Get(key);
我正在更新这个值,其中节点是当前配置/应用设置节点。
node.Attributes["value"].Value = value;
xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
4个回答

23
你可以尝试调用
ConfigurationManager.RefreshSection("appSettings")
从磁盘刷新文件的AppSettings部分。一旦已刷新,您应该能够读取新值。

我刚测试了一下,确实有效。


1
有趣的是,这似乎不会刷新通过ConfigurationManager.AppSettings["mySetting"]检索到的值。 - redcalx
你把这个放在哪里? - Nemavhidi

3

或者,您可以创建一个单例“Options”来保存应用程序设置并为您执行读写操作。一旦加载完成,更改.config不需要重新加载,您只需在单例上设置属性并调用.Save()方法即可。

您的设置的“运行时”版本位于单例中,无需从磁盘读取。


1
ConfigurationManager.RefreshSection("appSettings");

运作正常!

但是要注意,如果我们处于调试模式,配置文件可能被称为xxxxx.vshost.exe.config,其中xxxxx是您的项目名称。


1
不要使用 ConfigurationManager 读取设置,而应该使用:
        System.Configuration.ConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile).AppSettings.Settings["value"];

是的,这也是可能的,但这可能不是最有效的方法。 - shahjapan
2
在这里,您也使用 ConfigurationManager。 - SwissCoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接