我有两个控制台应用程序,第一个是" Process1",它编译为exe并且无法更改其中的代码。 第二个是"米"用于计算Process1启动时间的控制台应用程序。我想现在是时候了 当在控制台窗口中打印HelloWorld时。
// {My Process1}: //我把它编译成一个名为process1.exe的程序集。
Class Process1{
static void Main(String[] args]){
Console.Write("Hello word");
}
}
我的第二个应用程序是一个控制台应用程序,它将process1.exe作为一个进程调用,我想知道什么时候 process1是" ready",假设它是" Hello Word"打印出来。我读到了Process.OutputDataReceived事件, 但调试后事件永远不会被触发,内部代码从未打印过。
// {Meter Application}
public Class Student{
String ID;
String Name;
}
public Class Program{
public static void Main(String[] args){
p.StartInfo = new ProcessStartInfo("process1.exe")
{
UseShellExecute = false,
//Add this line
RedirectStandardOutput = true,
};
Student st = new Student();
p.OutputDataReceived += P_OutputDataReceived;
p.Start();
//Add this line
p.BeginOutputReadLine();
p.WaitForExit();
}
private static void P_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
string output = e.Data;
Console.WriteLine("Process1 ready at: "+DateTime.Now);
Console.WriteLine("Data is: " + output);
}
}
答案 0 :(得分:1)
我的评论总结如下:
对Main()
方法的这种修改应该这样做。
public static void Main(String[] args){
p.StartInfo = new ProcessStartInfo("process1.exe")
{
UseShellExecute = false,
RedirectStandardOutput = true
};
Student st = new Student();
p.OutputDataReceived += P_OutputDataReceived;
p.Start();
p.BeginOutputReadLine();
p.WaitForExit();
}