以下场景:
我有一个带有以下代码的控制台应用程序:
static void Main(string[] args)
{
// Some code.
Console.WriteLine("Done");
Console.ReadLine();
}
应用程序已成功构建并生成"测试.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"是否正在等待当前进程中的输入?
有没有办法同步调用OutputReadLine((? 如果是,那么您的应用程序将阻塞,直到测试.exe完成,然后才会执行下一行代码。 无需检查。