C#控制台应用程序标准输入不能被其他程序使用吗?

时间:2020-07-19 21:42:21

标签: c# actionscript-3 streamreader

using (Stream stdin = Console.OpenStandardInput())
        {
            using (Stream stdout = Console.OpenStandardOutput())
            {
                byte[] buffer = new byte[2048];
                int bytes;
                while ((bytes = stdin.Read(buffer, 0, buffer.Length)) > 0)
                {
                    stdout.Write(buffer, 0, bytes);
                }
            }
        }

这段代码是从stdin到stdout的基本回显,当我直接写到控制台时它可以工作。但是,当我尝试使用另一个程序(在这种情况下是使用ActionScript 3的AIR游戏)向stdin写入时,它将无法正常工作。

我已经使用AS3的NativeProcess启动了C#应用程序。让我开始一个过程并访问它的标准输入/输出。从stdout读取可以正常工作,但向stdin写入则无济于事。

这是写入标准输入的AS3代码: The AS3 code for writing to the stdin

我不知道为什么这不起作用。我已经在C#应用程序上尝试了几种不同的读取方法,但没有任何方法可以捕获通过stdin发送的数据。

C#应用程序标准输入: The C# applications stdin

C#应用程序标准输出: The C# applications stdout

对于此方法为何无法正常工作,我将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

事实证明,您不能在当前的.NET框架上执行此操作。您必须为 3.5或更低版本

这是我找到的答案。 AIR NativeProcess standardInput not connecting to app

编辑: 即使将.NET Framework更改为3.5甚至3.0之后,我也无法正常运行。经过一整天的调试后,我放弃了,所以我继续前进,并在C#应用程序和Flash游戏中的服务器上实现了一个简单的TCP客户端。可以正常工作,但是有点不必要。

相关问题