我必须查看数百篇与StandardOutput ReadtoEnd暂停相关的文章,但似乎没有一篇文章回答我的具体问题。
我的场景是我正在为我的ASP.NET MVC应用程序中使用的第三方控制台应用程序创建一个包装器。我启动过程,传递一个输入字符串(这是一个字符串格式的点文件),应用程序返回一个文件(在这种情况下为pdf)。
该文件被放入标准输出(根据文档),但我似乎无法读取数据。
当我手动运行控制台应用程序时,我在输出窗口中以文本形式接收文件,但程序从未真正退出"退出"。我必须按CTRL + C结束这个过程。
我猜这就是为什么我打电话给
process.StandardOutput.ReadToEnd();
刚挂?
任何人都可以对我做错的事情有所了解。我希望将方法调用中输出的文件作为byte[]
返回。
如果看起来这是重复的话,感谢和批评。
答案 0 :(得分:2)
有两个问题:
ReadToEnd()
返回一个字符串。如果数据是二进制的话,这不是个好主意ReadToEnd()
没有返回,因为程序永远不会退出因此,尝试使用更低级别的流方法(如Stream.Read
)读取基础流(process.StandardOutput.BaseStream
),并在程序完成发送数据时检测自己。