2013-04-25 3 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

Ну, вы пробовали использовать отладчик? Что именно вы подразумеваете под «замораживанием»? Если вы все это делаете в потоке пользовательского интерфейса, ваш пользовательский интерфейс * будет заморожен до тех пор, пока цикл не завершится, но вы говорите, что он фактически зависает навсегда? –

+0

Я просто попробовал отладчик, он не проливает свет на проблему. Я думаю, что вы можете быть правы в своей теории циклов, поскольку то, что я подразумеваю под замораживанием, заключается в том, что пользовательский интерфейс становится невосприимчивым, и да, это в потоке пользовательского интерфейса, но цикл не должен занимать много времени, чтобы закончить, поскольку это был просто несколько строк. Я думаю, что я просто читаю логику неправильно, и программа застряла в постоянном цикле, я не уверен, где я ошибся, хотя –

ответ

5

ли вы когда-нибудь выйти из этого цикла while(npcName == button1.Text){? :-)

+0

Ха-ха, полностью пропустил это, спасибо :) –

Смежные вопросы