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&nbsp;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&nbsp;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;
        }
    }