检测Console.ReadLine()

时间:2017-03-22 16:23:03

标签: c# console system.diagnostics

以下情景:

我有一个控制台应用程序,其代码如下:

static void Main(string[] args)
{
      // Some code.
      Console.WriteLine("Done");
      Console.ReadLine();
}

应用程序已成功构建并生成“Test.exe”。

现在我有另一个执行生成的exe的控制台应用程序。

static void Main(string[] args)
        {
            var processStartInfo = new ProcessStartInfo("Test.exe")
            {
                UseShellExecute = false,
                RedirectStandardOutput = true
            };

        // Setup the process
        process = new Process { StartInfo = processStartInfo, EnableRaisingEvents = true };

        process.OutputDataReceived += ProcessOnOutputDataReceived;
        process.Start();
        process.BeginOutputReadLine();
        // Detect here if application is completed.
        }

        Console.ReadLine();
    }

    private static void ProcessOnOutputDataReceived(object sender, DataReceivedEventArgs dataReceivedEventArgs)
    {
        Console.WriteLine(dataReceivedEventArgs.Data);
    }

当我执行上面的代码时,它调用“Test.exe”,并在当前进程的控制台窗口中显示“Test.exe”的输出。

“Test.exe”等待“Console.ReadLine()”输入,当前进程等待“Test.exe”完成。

是否可以检测“Test.exe”是否在等待当前进程中的输入?

1 个答案:

答案 0 :(得分:0)

有没有办法同步调用OutputReadLine()?如果是,那么您的applicalion将阻塞,直到test.exe完成,然后才会执行下一行代码。没有必要检查。