读取config文件问题

superzxf 2004-08-17 03:54:58
我先对config文件进行了更新
再用System.Configuration.AppSettingsReader重新读取内容时结果还是原先没有更新的内容,需要把程序关闭后重新打开才可以。
如何可以在不关闭程序的情况下更新config文件中的内容,且马上生效。
...全文
406 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaspar 2004-09-09
  • 打赏
  • 举报
回复
superzxf(superzxf)
我程序是这样的,启动时读取config文件中的一些参数,确定服务器的位置,然后从服务器上检查是否有更新的config文件,如果有的话就把服务器上的config文件复制到本机并覆盖原先的config文件,然后程序继续读取config文件中的内容进行下一步的设置。
由于config文件是复制过来的,不知道和原先的有哪些不同,所以无法采用hashtable的方式保存变动后的内容。
----------------------------------------------------------
我觉得楼主的这种方式不太好,如果全部更新的话,那怎么能存在个性化的一个设置呢?
对于app.config我觉得还是要放一些个性化的东西的,比如用户的输入习惯,和窗口习惯的,这样子的程序才会更有人性化的特色.而且我觉得完全只要在app.config自定义一个针对服务器的节点,以后只要更新这个节点应该就是足够了吧!app.config是xml呀!要充分利用的!
Canbus 2004-09-08
  • 打赏
  • 举报
回复
这个很容易的。我一直都用这个,哪个什么鬼app.config难用死了。
//从xml文件中读取数据
private void readXml()
{
string fileName=Application.StartupPath+"\\SysSetting.xml";

XmlTextReader tr = new XmlTextReader(fileName);
while (tr.Read())
{
if (tr.NodeType == XmlNodeType.Element)
{
LoadData(tr);
}

}

tr.Close();
}


private void LoadData(XmlReader tr)
{
switch(tr.Name)
{
case "LocalPath": this.txtFileDir.Text = tr.ReadElementString();
break;
case "RunStartTime": this.dateBegin.Text = tr.ReadElementString();
break;
default: break;
}
}
good_cyg 2004-08-24
  • 打赏
  • 举报
回复
up
superzxf 2004-08-23
  • 打赏
  • 举报
回复
我不是WEB方式运行啊,不是ASP.NET,楼上的没用啊
robin0925 2004-08-23
  • 打赏
  • 举报
回复
没有必要这么复杂把!web.config本来就更新后就不用重启的!

-->
<compilation
defaultLanguage="c#"
debug="true"
/>
把debug设为“true”,再试试看!
superzxf 2004-08-23
  • 打赏
  • 举报
回复
下面是我现在使用的方法,感觉有点怪,有没其它更好的方法?

private System.Xml.XmlDocument cfgdoc=new System.Xml.XmlDocument();
private System.Xml.XmlNode para1;
private string parastr;
private string CfgFileName;
cfgdoc.Load(CfgFileName);
para1=cfgdoc.GetElementsByTagName("paraname1")[0];
parastr=para1.InnerText; //读取参数
...
para1.InnerText=parastr; //保存参数
cfgdoc.Save(CfgFileName);


superzxf 2004-08-20
  • 打赏
  • 举报
回复
我程序是这样的,启动时读取config文件中的一些参数,确定服务器的位置,然后从服务器上检查是否有更新的config文件,如果有的话就把服务器上的config文件复制到本机并覆盖原先的config文件,然后程序继续读取config文件中的内容进行下一步的设置。
由于config文件是复制过来的,不知道和原先的有哪些不同,所以无法采用hashtable的方式保存变动后的内容。

那有没有XML文件创建和读取的简单方法啊
我只需要保存键值和数据就可以了,就像原先的ini文件的功能,我想用XML文件来代替
gaspar 2004-08-18
  • 打赏
  • 举报
回复
我是在改变Config文件的同时,将更改项目记录到一个hashtable中
----------------------------
是不是在修改config并保存完之后将新的config放到内存? 请问怎么去实现这个功能?
-----------------------------
不需要将所有的config内容都放入hashtable中,只需要放入你改动过的设置,或是新添加的设置,可以放置浪费效率!
实现方法,构造一个静态的hashtable,当需要更改设置时,同时添加到hashtable中,注意在读取时要先读hashtable.如果hashtable中没有才读config,hashtable的查找和读取效率是很高的,你几乎是不用考虑其时间消耗,这样一来就可以不影响你程序整体效率
herony420 2004-08-18
  • 打赏
  • 举报
回复
建议你能够看看msdn的Hashtable的描述,记住msdn是最好的工具和帮助
herony420 2004-08-18
  • 打赏
  • 举报
回复
使用Hashtable纪录你的变更项,然后读取Hashtable的项,Hashtable是微软.net提供的功能非常强大的内存表工具,好好利用可以解决很多问题,并提高速度
darren_zhu_NZ 2004-08-18
  • 打赏
  • 举报
回复
我是在改变Config文件的同时,将更改项目记录到一个hashtable中
----------------------------
是不是在修改config并保存完之后将新的config放到内存? 请问怎么去实现这个功能?
yingshis 2004-08-18
  • 打赏
  • 举报
回复
楼上的有道理
gaspar 2004-08-18
  • 打赏
  • 举报
回复
我以前也碰到过这样的需求,我是在改变Config文件的同时,将更改项目记录到一个hashtable中,我每次读取数据时都先从hashtable中读如果没有再利用net的读config的方法读内存中的设置.
sos_hawk 2004-08-18
  • 打赏
  • 举报
回复
Config信息是程序启动一次加载进行缓存,以后都不加载的,所以可以考虑用XML等进行存储
vzxq 2004-08-18
  • 打赏
  • 举报
回复
把旧的DEL
然后换新的
tongcheng 2004-08-18
  • 打赏
  • 举报
回复
看看
jimh 2004-08-18
  • 打赏
  • 举报
回复
使用System.Configuration.ConfigurationSettings.AppSettings["youkey"]来读取,返回是一个字符窜,更新了文件立刻生效,不需要重启。
darren_zhu_NZ 2004-08-18
  • 打赏
  • 举报
回复
最后一步 return n.InnerText
darren_zhu_NZ 2004-08-18
  • 打赏
  • 举报
回复
用xml做config;

XmlTextReader r=new XmlTextReader(路进);
XmlDocument doc=new XmlDocument();
doc.Load(reader)l

XmlNode n=doc.SelectSingleNode("descendant::/config/configname");
superzxf 2004-08-18
  • 打赏
  • 举报
回复
有读取和写入XML文件的示例代码吗?
不要复杂的,只要基本的就可以了
加载更多回复(6)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧