ReadLine blocks till it sees a newline character, ReadToEnd till it sees an EOF character.
i might be wrong.. but maybe those particular characters arent showing up when you expect them to during your ReadLine and ReadToEnd calls. maybe something like unix line-endings while blocking for a windows line-ending? expected output unexpectedly going to the error stream instead?
have you tried using seperate async threads for your IO as was mentioned here? i would try that first, and read from your output and error streams one character at a time. determine for yourself whether or not youve reached an entire block of output that youre looking for... painful, i know.
like was mentioned before.. depending on a precice sequence can be a bad move, you need more robust parsing and interpretation of the I/O to have anything close to reliable.