以下情景:
我有一个控制台应用程序,其代码如下:
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”是否在等待当前进程中的输入?
答案 0 :(得分:0)
有没有办法同步调用OutputReadLine()?如果是,那么您的applicalion将阻塞,直到test.exe完成,然后才会执行下一行代码。没有必要检查。