C #: Uso de StreamReader para leer la línea del archivo txt, pero Peek () devuelve -1 incluso si quedan muchas líneas

Uso el método Peek () de StreamReader para verificar si hay más líneas que deben procesarse. Hay más de 1000 líneas en mi archivo, pero Peek () de repente devuelve -1 cuando llega a la línea # 750. Lo comprobé pero parece que no hay diferencias entre la línea # 750 y la # 751. Incluso eliminé la línea # 750 y 751, todavía se dividirá en otra línea.

Abajo están mis códigos para su información:

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

Lo intentéwhile ((x = reader.ReadLine()) != null), pero se descartó una excepción de "No se puede acceder a un objeto desechado".

Finalmente lo descubrí usando:while (stream.CanRead && (x = reader.ReadLine()) != null)

Respuestas a la pregunta(10)

Su respuesta a la pregunta