外部修改C#Winform程序配置文件后Winform程序通过ConfigurationManager.AppSettings.Get方法读取没有变化

如题。运行Winform程序,读取配置文件中AppSetting的某个节点的值,比如得到“0";然后用记事本打开并修改这个节点为”1“并保存,再次用Winform程序读取... 如题。运行Winform程序,读取配置文件中AppSetting的某个节点的值,比如得到“0" ;然后用记事本打开并修改这个节点为”1“并保存,再次用Winform程序读取这个节点,还是得到”0“,重启应用程序再读取就可以得到"1"。这是为什么?怎样才能实现修改配置文件后不重启程序得到修改后的值? 展开
 我来答
ouyangmubai
2013-11-06
知道答主
回答量:29
采纳率:100%
帮助的人:13.4万
展开全部
这是因为你程序运行时,已经将配置文件中的信息加载到了内存中,之后每次读取时如果缓存中已经存在对应的值,则直接使用此值,否则才会从文件中读配置,这样做的好处是减少了系统和文件甚至与数据库的交互次数;
在web程序中配置文件更改后,应用程序会自动重启一次,于是配置会自动生效。但winform程序没有这个机制,于是Configuration.ConfigurationManager调用配置不会自动更新。
所以建议你手动实现调用配置的逻辑,代码如下:
public string ReadAppSetting(string key)
{
string xPath = "/configuration/appSettings//add[@key='"+key+"']";
XmlDocument doc = new XmlDocument();
string exeFileName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
doc.Load(exeFileName + ".exe.config");
XmlNode node = doc.SelectSingleNode(xPath);
return node.Attributes["value"].Value.ToString();
}
这样做的话就不存在缓存的问题了,希望能对你有所帮助。
BLUEZSOFT
2013-11-06 · 超过24用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:62.9万
展开全部
winform本来就有这种机制,如果你要立即变化,就得自己建配置文件,然后做设置
winform默认的config文件其实是在运行的时候转化成了:程序名称.exe.config,其实程序修改配置文件是对这个文件进行修改,当你修改完的时候,去看 程序名称.exe.config,你会发现你的设置没有保存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式