C #: использование StreamReader для чтения строки из txt файла, но Peek () возвращает -1, даже если осталось много строк

Я использую метод Peek () StreamReader, чтобы проверить, нужно ли обрабатывать больше строк. В моем файле более 1000 строк, но Peek () неожиданно возвращает -1, когда достигает строки # 750. Я проверил, но, кажется, нет различий между строкой № 750 и № 751. Даже если я удалил строки № 750 и 751, они все равно будут разбиты на другой строке.

Ниже приведены мои коды для вашей информации:

try
{
    String ftpserver = ftp + filename;
    reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpserver));
    reqFTP.UsePassive = false;
    reqFTP.UseBinary = true;
    reqFTP.Proxy = null;
    reqFTP.Credentials = new NetworkCredential(username, password);

    reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
    response = (FtpWebResponse)reqFTP.GetResponse();
    stream = response.GetResponseStream();
    reader = new StreamReader(stream, ConfigHelper.MyEncoding);
    while (reader.Peek() > -1)
    {
        string x = reader.ReadLine();
        if (x != null)
        {
          //.......
         }
    }
}
catch (Exception ex)
{
}
finally
{
    if (reader != null)
        reader.Close();
    if (response != null)
        response.Close();
}

Я пыталсяwhile ((x = reader.ReadLine()) != null), но исключение «Невозможно получить доступ к удаленному объекту» было выброшено.

Наконец, я понял это с помощью:while (stream.CanRead && (x = reader.ReadLine()) != null)

Ответы на вопрос(5)

Ваш ответ на вопрос