зависает при разборе текста - PullRequest
0 голосов
/ 16 марта 2011

привет, у меня есть следующий код:

        private void Textparsing()
        {               
            using (StreamReader sr = new StreamReader(Masterbuildpropertiespath))                 
            {                    
                String line;
                line = sr.ReadLine();
                while ((line != null))
                {
                    if (line.StartsWith("Exec_mail"))
                    {
                        ExecmailCheckBox.IsChecked = true;
                    }
                }                 
            }
}

Когда я использую эту функцию, кажется, что приложение просто висит там, ничего не делая. Это что-то не так с циклом while?

РЕДАКТИРОВАТЬ 1:

код, который я использую сейчас, имеет ошибку: «System.IO.StreamReader» не содержит определения «Readline», и никакой метод расширения «Readline», принимающий первый аргумент типа «System.IO.StreamReader», не может быть найденным

код:

        private void Textparsing()
        {               
            using (StreamReader sr = new StreamReader(Masterbuildpropertiespath))                 
            {                    
                    while (sr.Peek() >= 0)
                    {
                        if (sr.Readline().StartsWith("Exec_mail"))
                        {
                            ExecmailCheckBox.IsChecked = true;
                        }
                    }              
            }               
}

В этой строке обнаружена ошибка:

if (sr.Readline().StartsWith("Exec_mail"))

1 Ответ

0 голосов
/ 16 марта 2011

Используйте StreamReader.Peek () , чтобы определить конец файла:

private void Textparsing()
{
    using (StreamReader sr = new StreamReader(Masterbuildpropertiespath))
    {
        while (sr.Peek()>=0)              
        {
            if (sr.ReadLine().StartsWith("Exec_mail"))
            {
                ExecmailCheckBox.IsChecked = true;   
            }
        }
    }
}

РЕДАКТИРОВАТЬ:

Я запустил код спример текстового файла, расположенного в D: \ aa.txt, с 4 строками текста в нем:
Exec_mail
abcd
Exec_mail
efgh
Exec_mail

с использованием этого кода:

private void Textparsing()
{
    using (StreamReader sr = new StreamReader(@"D:\aa.txt")) 
    {
        while (sr.Peek() >= 0)
        { 
            if (sr.ReadLine().StartsWith("Exec_mail")) 
            {
                MessageBox.Show("yes");
            } 
        } 
    } 
}

И это показало да три раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...