Я пишу консольное приложение С#, которое принимает 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()
Это не сработало.
Я также пробовал «взломать», упомянутый в нижней части этого вопроса о стеке: получить ввод с каналом .
Есть идеи?
ReadLine()
) или CTRL+Z (используяReadToEnd()
). 12.12.2010