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