Это кажется интересным вопросом здесь. На первый взгляд может показаться, что у ReadLine есть проблема с закрывающимся из-под него дескриптором, когда он пытается прочитать данные, и, таким образом, это может показаться ошибкой в Framework. Тем не менее, я не уверен, что это просто ошибка в .Net Framework ...
Однако здесь есть пара проблем низкого уровня.
Все остальные ответы, которые вы получили до сих пор, предлагают изменить цикл while. Я бы тоже так поступил, но не думаю, что это корень вашей проблемы. Вам там не нужен сон, потому что вы получите состояние ожидания из ReadLine (), если нет данных для чтения, и он просто возвращает ошибку, тогда вы будете «замкнуты». Поэтому убедитесь, что вы проверяете все состояния ошибок во время этого цикла.
Если нет, я вижу проблемы.
Если бы все остальное работало так, как должно, то на вашем месте я бы начал с того, чтобы попытаться определить, можете ли вы скопировать его вне вашей программы с помощью небольшой демонстрационной программы. Я уверен, что есть много проверки ошибок в обработке потока Framework. Тем не менее, похоже, что вы запускаете что-то из Cygwin, и это вывод, который вы читаете из оболочки cmd.
Попробуйте создать простое приложение, которое просто выплевывает данные в stdout и stderr, а затем убедитесь, что приложение закрывается, пока вы все еще читаете ..
Также используйте отладчик, чтобы увидеть, какая строка == после сбоя.
Larry