C# 文件读取器冻结我的程序

C# 文件读取器冻结我的程序,c#,file,methods,datagridview,freeze,C#,File,Methods,Datagridview,Freeze,运行以下方法时,我无法确定程序冻结的原因: String fileName = "Drops.de"; StreamReader streamReader = new StreamReader(fileName); String npcName; string npcID; string itemID; string itemAmount; string itemRarity; str

运行以下方法时,我无法确定程序冻结的原因:

String fileName = "Drops.de";
        StreamReader streamReader = new StreamReader(fileName);
        String npcName;
        string npcID;
        string itemID;
        string itemAmount;
        string itemRarity;
        string itemName;

        while(!streamReader.EndOfStream){
            string line = streamReader.ReadLine();
            //start of block
            if(line.StartsWith("[")){
                npcName = line.TrimStart('[');
                npcName = npcName.TrimEnd(']');
                while(npcName == button1.Text){    
                while(!line.StartsWith("[/")){
                    line = streamReader.ReadLine();
                    String[] s = line.Split(' ');
                    npcID = (s[0]);
                    itemName = (s[1]);
                    itemID = (s[2]);
                    itemAmount = (s[3]);
                    itemRarity = (s[4]);
                    dataGridView1.Rows.Add(itemName, itemID, itemAmount, itemRarity);
                    /*
                    DataGridViewRow row = (DataGridViewRow)dataGridView1.Rows[0].Clone();
                    row.Cells[0].Value = itemName;
                    row.Cells[1].Value = itemID;
                    row.Cells[2].Value = itemAmount;
                    row.Cells[3].Value = itemRarity;
                    dataGridView1.Rows.Add(row);*/
                    dataGridView1.Refresh();
                    line = streamReader.ReadLine();
               //MessageBox.Show(npcName);
                }
                }

            }
        }
        streamReader.Close();
    }
我怀疑它与“while”循环有关。然而,我很可能错了。我对编程相当陌生,所以这可能是显而易见的:p


无论如何,所有的帮助都将不胜感激:)

当(npcName==button1.Text){?:-)当(npcName==button1.Text){?:-)退出这个循环时,你会退出这个循环吗?如果你在UI线程上执行所有这些操作,那么你的UI将冻结,直到循环完成-但你是说它实际上会永久冻结吗?我只是尝试了调试器,它没有进一步说明问题。我认为你的循环理论可能是正确的,因为我所说的冻结是UI变得无响应,是的它在UI线程上,但是循环应该不会花很长时间来完成,因为它只有几行。我想我只是读错了逻辑,程序被卡在了一个永久的循环中,我不确定我哪里出了错。好吧,你试过使用调试器吗?你说的“冻结”到底是什么意思?如果你在UI线程上执行所有这些操作,那么你的UI将冻结,直到循环完成-但你是说它实际上会永久冻结吗?我只是尝试了调试器,它没有进一步说明问题。我认为你的循环理论可能是正确的,因为我所说的冻结是UI变得无响应,是的它在UI线程上,但是循环应该不会花很长时间来完成,因为它只有几行。我想我只是读错了逻辑,程序被卡在了一个永久的循环中,我不确定我哪里出错了