XML格式的文件,有25M
在用BackgroundWorker读取的时候仍然有假死现象,而且读完数据后,DataGridView中的滚动条不见了。
怎么解决呢?

解决方案 »

  1.   

                  XmlDocument MyXML = new XmlDocument();
                  MyXML.Load("1.xml");
                  XmlNode Node = MyXML.DocumentElement;
                  string loginNames = comboboxx1.Text;
                  XmlNodeList nodes;
                  XmlElement root = MyXML.DocumentElement;
                  nodes = root.SelectNodes("//loginer[loginName = '" + loginNames + "']");
                  string strn = null;
                  string strpwd = null;
                  foreach (XmlNode xn in nodes)
                  {
                      XmlElement xe = (XmlElement)xn;
                      XmlNodeList nodech = xe.ChildNodes;
                      foreach (XmlNode xnch in nodech)
                      {
                          XmlElement xech = (XmlElement)xnch;
                          if (xech.LocalName == "loginName")
                          {                          strn = xech.InnerText; ;
                              if (strn == loginNames)
                              {
                                  XmlNode xnpwd = xech.NextSibling;
                                  strpwd = xnpwd.InnerText;
                                  
                              }
                          }
                      }
                  }
                  this.textBox1.Text = strpwd;<?xml version="1.0" encoding="GB2312" ?> 
    - <login>
    - <loginer>
      <loginName>123</loginName> 
      <loginPWD /> 
      </loginer>
    - <loginer>
      <loginName>chazikai24</loginName> 
      <loginPWD>123456</loginPWD> 
      </loginer>
    - <loginer>
      <loginName>4</loginName> 
      <loginPWD /> 
      </loginer>
      </login>
    这个是我写的登录框界面。我把登陆过的帐号保存在xml里。打开窗体就自动读取xml到combobox。你可以参考下。
    读取xml用的是遍历子节点,所以出现假死是在读,文件越大需要的时间越长。全部读完之后才会显示在datagridview里
      

  2.   

    显示进度条
    在ProgressChanged、RunWorkerCompleted里进行
      

  3.   

    数据我会读取,我独到了DataSet中去的
    关键数据量大,用户交互不友好,而且用backgroundworker后
    右侧滚动条消失,看到有的文章说是因为多线程的问题。