ReadLineなら問題ないはずだが。どこかでロックかけてないか。
とりあえずReadで一文字ずつ読んでけば?
あとRead系は読みとれるまでブロックしてくれるので、Thread.Sleep呼ぶ必要はないはず。