2013-04-25 23 views
1

我堅持不能夠確定爲什麼運行下面的方法時,我的程序凍結:文件閱讀器凍結我的程序

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(); 
    } 

我有這事做的「而」循環的懷疑。不過,我很可能是錯的。我對編程頗爲陌生,所以它可能是很明顯的:p。

反正所有幫助將不勝感激:)

+0

那麼,你有沒有嘗試過使用調試器? 「凍結」到底是什麼意思?如果你正在UI線程中完成所有這些,那麼你的UI將會凍結,直到循環結束 - 但是你是否說它實際上會永久凍結? – 2013-04-25 05:56:06

+0

我只是試過調試器,它沒有在這個問題上進一步闡明。我認爲你的循環理論可能是正確的,因爲我的意思是凍結是UI變得沒有反應,而且它是在UI線程上,但是循環不應該花很長時間才能完成,因爲它只是一個幾行。我想我只是讀邏輯錯誤,程序卡在永久循環中,我不確定我在哪裏出錯了,雖然 – 2013-04-25 06:01:16

回答

5

你可會退出這個循環​​? :-)

+0

哈哈,完全錯過了,謝謝:) – 2013-04-25 07:27:43