我正在编写一个带有2个参数的C#控制台应用程序: myprogram.exe param1 param2
param2 是可选的,想法是如果它不存在,获取管道数据:
echo "hithere" | myprogram.exe param1
Run Code Online (Sandbox Code Playgroud)
我通过捕获Console.In.ReadToEnd()仅传递1个参数时使这部分工作.
我面临的问题是,当只传递1个参数并且没有数据被管道传输时,它只是在那里听取用户输入,并且关闭的唯一方法是Ctrl+C结束程序.
相反,有没有办法返回错误并退出程序,如果只提供了1个参数,没有数据被管道?
为了测试是否有任何等待,我尝试使用:
Console.OpenStandardInput().CanReadConsole.OpenStandardInput().LengthConsole.In.Peek()那没用.
我也试过了这个stackoverflow问题底部提到的'hack':C#Console接收带管道的输入.
有任何想法吗?