Metoda ReadReader Read nie odczytuje liczby określonych znaków

Muszę przeanalizować duży plik, więc zamiast:

 string unparsedFile = myStreamReader.ReadToEnd(); // takes 4 seconds
 parse(unparsedFile); // takes another 4 seconds

Chcę skorzystać z pierwszych 4 sekund i spróbować zrobić obie rzeczy jednocześnie, wykonując coś w stylu:

        while (true)
        {
            char[] buffer = new char[1024];

            var charsRead = sr.Read(buffer, 0, buffer.Length);

            if (charsRead < 1)
                break;

            if (charsRead != 1024)
            {
                Console.Write("Here");  // debuger stops here several times why?
            }

            addChunkToQueue(buffer); 
        }

Oto obraz debugera: (dodałemint counter aby pokazać na jakiej iteracji czytamy mniej niż 1024 bajty)

Zauważ, że tam 643 znaki czytają, a nie 1024. W następnej iteracji otrzymuję:

Myślę, że powinienem odczytywać 1024 bajty przez cały czas, aż dojdę do ostatniej iteracji, gdzie pozostałe bajty są mniejsze niż 1024.

Więc moje pytanie jest dlaczego czytam „losową” liczbę znaków, gdy powtarzam pętlę while?

Edytować

Nie wiem, z jakim strumieniem mam do czynienia. Wykonuję proces taki jak:

        ProcessStartInfo psi = new ProcessStartInfo("someExe.exe")
        {
            RedirectStandardError = true,
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true,
        };

        // execute command and return ouput of command
        using (var proc = new Process())
        {
            proc.StartInfo = psi;
            proc.Start();                               

            var output = proc.StandardOutput;  //  <------------- this is where I get the strem

            //if (string.IsNullOrEmpty(output))
            //output = proc.StandardError.ReadToEnd();

            return output;
        }
    }

questionAnswers(3)

yourAnswerToTheQuestion