需求是这样的.我btnOpen一个文件用datagridview显示出来,同时还需求1个另存为的功能,但我btnCopy另存为的时候又要打开一次文件(这样就不方便了).我就在代码里增加了红色部分代码,问题就出来了只要打开1M以上的数据就会卡在哪里不动了,请问下有什么解决办法吗?   using (StreamReader sr = new StreamReader(dlgOpenFile.FileName, false))
                {
                    s = sr.ReadLine();
                    split = s.Split('\t');// \t格式转换
                    int i = 0;
                    foreach (String colname in split)
                    {
                        table.Columns.Add(colname, System.Type.GetType("System.String"));
                        i++;
                    }
               
                    int j = 0;
                    while (sr.Peek() > -1)
                    {
                        s = sr.ReadLine();                        j = 0;
                        row = table.NewRow();
                        split = s.Split('\t');// \t格式转换
                        foreach (String colname in split)
                        {
                            row[j] = colname;
                            txtValue += colname;////存储文件数据
                            j++;
                          // this.textBox1.Text += colname; 
                            if (j >= i) { break; }
                        }
                        table.Rows.Add(row);                        
                    }

解决方案 »

  1.   


            foreach (String colname in split)
                            {
                                row[j] = colname;
                                txtValue += colname;////存储文件数据
                                j++;
                               this.textBox1.Text += colname; 
                                if (j >= i) { break; }
                            }
                            table.Rows.Add(row);
      

  2.   

    txtValue += colname;这段代码...
      

  3.   

    为什么要再读一遍?读时候读出来显示在dgv里并存到一个数组里  另存为直接往文件里写  如果比较慢就用多线程
      

  4.   

    txtValue += colname;////存储文件数据
    请使用:
                StringBuilder sb = new StringBuilder();
                sb.AppendLine(colname);
    直接使用+进行字符串拼接,会导致很大的性能消耗,因为每次string拼接,都会导致创建一个新的string来存储拼接后的字符串。
      

  5.   

    为什么需要存储?就因为Copy新文件?1、读取:任务只在读取和解析
    2、显示:任务只在解析后的显示
    3、存文件:读取gridview内的数据组织好结构并save
    4、拷贝文件:无论是要拷贝的新文件还是旧文件,请注意不要让读取的时候来帮你存储要拷贝的数据。直接File.CopyTo即可。不管你要实现怎样一个功能。分析需求、解析需求(拆分)、设计程序、实现程序。4个步骤不可缺少。也可以说一码归一码混淆只会得不偿失。一次性赋值和+=拼接赋值的性能是不一样的。根据具体的需求定。