标准IO上的C#控制台应用程序读/写不起作用

时间:2014-06-05 15:44:09

标签: c#

拥有可在标准输入和输出上读/写的C#控制台应用程序。

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Console application");

        while(true)
        {
            int input = Console.Read();

            Console.WriteLine(input.ToString());
        }
    }
}

我有其他本机应用程序在管道通信的帮助下启动控制台应用程序和读/写。 C#控制台应用程序写入在外部应用程序中成功读取,并且外部应用程序的初始写入工作正常,然后循环读取C#控制台应用程序。 之后,管道上的外部应用程序写入不起作用。

荒谬的事情是在某些操作系统上发生了问题,很少有它正常工作。

使用.NET Framework 4 / Client Profile编译C#Console应用程序。

2 个答案:

答案 0 :(得分:0)

MS的已知问题: http://support.microsoft.com/en-us/kb/2675468

请查看KB以获取更多详细信息以及提供的样本。

答案 1 :(得分:-1)

尝试

static void Main(string[] args)
{
    Console.SetIn(new StreamReader(Console.OpenStandardInput()));
    while (Console.In.Peek() != -1)
    {
        string input = Console.In.ReadLine();
        Console.WriteLine(input);
    }
}

它是否有效?

编辑:我已经更新了我的答案。

样本用法/输出:

dir /B | ConsoleApplication1.exe

产生

ConsoleApplication1.exe
ConsoleApplication1.exe.config
ConsoleApplication1.pdb
ConsoleApplication1.vshost.exe
ConsoleApplication1.vshost.exe.config
ConsoleApplication1.vshost.exe.manifest

当我尝试原始代码时,它会不断地发送垃圾邮件-1。 您也可以尝试:

while (true)
{
    int input = Console.Read();
    if (input != -1) { // -1 = no input
        Console.WriteLine(input.ToString());
    }
}

现在它分别处理每个角色。