以下场景:
我有一个包含以下代码的控制台应用程序:
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“是否正在等待当前进程中的输入?
发布于 2017-03-23 00:31:41
有没有同步调用OutputReadLine()的方法?如果是,那么您的应用程序将被阻塞,直到test.exe完成,然后才会执行您的下一行代码。就不需要检查了。
https://stackoverflow.com/questions/42957409
复制相似问题