Я пишу консольное приложение на 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 # получает ввод с помощью конвейера .
Есть идеи?