C # - Console.In.ReadToEnd () зависает при вводе пользователем данных, если в программу не переданы данные

Я пишу консольное приложение на C #, которое принимает 2 параметра: myprogram.exe param1 param2

param2 не является обязательным, и если его нет, получить передаваемые данные:

echo "hithere" | myprogram.exe param1

Я заставил эту часть работать, захватив Console.In.ReadToEnd () , когда передается только 1 параметр.

Проблема, с которой я столкнулся, - когда только 1 параметр прошло, и данные не передаются, он просто сидит и слушает вводимые пользователем данные, и единственный способ закрыть его - это нажать Ctrl + C , чтобы завершить программу.

Вместо этого есть способ вернуть ошибку и выйти из программы, если только Был предоставлен 1 параметр, и данные не были переданы по конвейеру?


Чтобы проверить, есть ли что-то ожидающее, я попытался использовать:

  • Console.OpenStandardInput (). CanRead
  • Console.OpenStandardInput (). Length
  • Console.In.Peek ()

Это не сработало.

Я также пробовал «взлом», упомянутый в конце этого вопроса о переполнении стека: Консоль C # получает ввод с помощью конвейера .

Есть идеи?

5
задан Community 23 May 2017 в 12:31
поделиться