读取文件怎样释放内存?

ppsniffer 2011-09-13 10:55:50

软件读取本地XML配置文件,会读取到 IP 配置值为:127.0.0.1(默认)。用户修改IP地址参数,成功保存到XML配置文件。form.Close(),form.Dispose()了当前窗口。

然后再次form.show 显示配置界面。IP配置值没有重新读取,依然显示的127.0.0.1。应该是读取到了内存中的数据,没有得到释放。

不知道这种情况应该如何释放内存中读到的数据?

希望大家指导,我的基础很差,以前写过asp.net,刚用C# WINFORM没两天。

...全文
277 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ppsniffer 2011-09-14
  • 打赏
  • 举报
回复
我每次更新了配置文件之后,都保存到了本地XML。因为有多个窗口间的传递参数,而我刚接触WINFORM就2,3天,还没搞懂委托,和事件这些技巧。为了赶进度,就每次都从XML中读取参数。

我写了个一个公共类,不知道这样算不算每次都xml.load了


#region 读取XML
/// <summary>
/// 读取XML
/// </summary>
/// <param name="_path">文件路径</param>
/// <param name="_root">查找根节点名</param>
/// <param name="_name">修改的节点名</param>
/// <returns></returns>
public static string GetXML(string _path, string _root, string _name)
{
string result = "";
XmlTextReader xtr = new XmlTextReader(_path);
XmlDocument xmlDoc = new XmlDocument();
try
{
xmlDoc.Load(xtr);
result = xmlDoc.SelectSingleNode(_root).SelectSingleNode(_name).InnerText;
}
catch (Exception ex)
{
//
}
xtr.Close();
return result;
}
#endregion
Dogfish 2011-09-14
  • 打赏
  • 举报
回复
使用using block。自动释放。
余山水 2011-09-14
  • 打赏
  • 举报
回复
需要重新xml.load
ruanwei1987 2011-09-14
  • 打赏
  • 举报
回复
xtr.Close();
改成

xtr.Dispose();呢?
风骑士之怒 2011-09-14
  • 打赏
  • 举报
回复
应该是有一个全局变量来存储这个配置信息,

界面显示都从这个变量读取,

而修改了配置后,最后一步也得同步更新变量,可以是刚刚输入的值,也可以读取刚刚保存好的XML文件
机器人 2011-09-14
  • 打赏
  • 举报
回复
重新读一遍xml, 你是要刷新内存里的变量值吧
ppsniffer 2011-09-14
  • 打赏
  • 举报
回复
不好意思。小弟才疏学浅。。。。。

经过反复调试,发现是我程序逻辑问题。。保存XML成功了,但不是修改。之前IP配置127.0.0.1依然存在于XML配置中。导致再次加载的时候,加载了第一个默认的IP配置,最新属性值就没加载到哪里。。。纠结。。基础太差。。大家鄙视我吧
stonemqy 2011-09-14
  • 打赏
  • 举报
回复
释放内存资源的话,将读取的语句放到using块里面,应该是可以的,这样不用关心如何去回收,当退出using块时,系统会自动回收using块中定义的变量所占用的所有内存。
ppsniffer 2011-09-14
  • 打赏
  • 举报
回复
GC.Collect()

试过了,不行。
顽主 2011-09-14
  • 打赏
  • 举报
回复
将读取资源的字节数置为零
AaronNanQH 2011-09-14
  • 打赏
  • 举报
回复
手动调用下GC.Collect()试试,我没试过,只是提个建议。
ppsniffer 2011-09-14
  • 打赏
  • 举报
回复
这里我每次都调用了GetXML()的,但数据都是一开始启动程序的那个配置。不是最新的。
我把软件关掉,再打开,就显示对的了。但没关闭软件之前。得到的IP配置,都是120.0.0.1。
这样的话,每次用户修改了其中一项配置,再打开配置界面,都显示不是新的,会给用户错觉没修改成功。
TMajier 2011-09-14
  • 打赏
  • 举报
回复
查看下xml文件是否已更改!这个和web不同,不存在缓存的问题!第二次读取数据的时候,需要再次调用你的GetXml();
ppsniffer 2011-09-13
  • 打赏
  • 举报
回复
没人吗?

110,535

社区成员

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

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

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