小编Mat*_*att的帖子

C# - Console.In.ReadToEnd()挂起用户输入,如果没有数据通过管道进程编程

我正在编写一个带有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().CanRead
  • Console.OpenStandardInput().Length
  • Console.In.Peek()

那没用.

我也试过了这个stackoverflow问题底部提到的'hack':C#Console接收带管道的输入.

有任何想法吗?

c# console command-line pipe

5
推荐指数
1
解决办法
2794
查看次数

标签 统计

c# ×1

command-line ×1

console ×1

pipe ×1