软件读取本地XML配置文件,会读取到 IP 配置值为:127.0.0.1(默认)。用户修改IP地址参数,成功保存到XML配置文件。form.Close(),form.Dispose()了当前窗口。  然后再次form.show 显示配置界面。IP配置值没有重新读取,依然显示的127.0.0.1。应该是读取到了内存中的数据,没有得到释放。不知道这种情况应该如何释放内存中读到的数据?希望大家指导,我的基础很差,以前写过asp.net,刚用C# WINFORM没两天。

解决方案 »

  1.   

    重新读一遍xml, 你是要刷新内存里的变量值吧
      

  2.   

    应该是有一个全局变量来存储这个配置信息,界面显示都从这个变量读取,而修改了配置后,最后一步也得同步更新变量,可以是刚刚输入的值,也可以读取刚刚保存好的XML文件
      

  3.   

    使用using block。自动释放。
      

  4.   

    我每次更新了配置文件之后,都保存到了本地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
      

  5.   

    查看下xml文件是否已更改!这个和web不同,不存在缓存的问题!第二次读取数据的时候,需要再次调用你的GetXml();
      

  6.   

    这里我每次都调用了GetXML()的,但数据都是一开始启动程序的那个配置。不是最新的。
    我把软件关掉,再打开,就显示对的了。但没关闭软件之前。得到的IP配置,都是120.0.0.1。
    这样的话,每次用户修改了其中一项配置,再打开配置界面,都显示不是新的,会给用户错觉没修改成功。
      

  7.   

    手动调用下GC.Collect()试试,我没试过,只是提个建议。
      

  8.   

    释放内存资源的话,将读取的语句放到using块里面,应该是可以的,这样不用关心如何去回收,当退出using块时,系统会自动回收using块中定义的变量所占用的所有内存。
      

  9.   

    不好意思。小弟才疏学浅。。经过反复调试,发现是我程序逻辑问题。。保存XML成功了,但不是修改。之前IP配置127.0.0.1依然存在于XML配置中。导致再次加载的时候,加载了第一个默认的IP配置,最新属性值就没加载到哪里纠结。。基础太差。。大家鄙视我吧
      

  10.   

     xtr.Close();
    改成 xtr.Dispose();呢?