我使用Process类的数据就绪事件得到一个正在运行的进程的标准输出和标准错误信息。
它在第一次运行的伟大工程,但在调用停止后(),然后开始()来强制应用程序的重新启动,我不再收到的数据。 我试过CancelErrorRead(),但没有运气。
我考虑的只是重新实例每次我需要重新运行应用程序时的对象,但似乎很傻需要做到这一点。
关于如何重新使用Process对象重新启动停止的进程有什么建议?
相关的代码块:
构造函数:
ProcessStartInfo objStartInfo = new ProcessStartInfo();
objStartInfo.CreateNoWindow = true;
objStartInfo.RedirectStandardInput = true;
objStartInfo.RedirectStandardOutput = true;
objStartInfo.RedirectStandardError = true;
objStartInfo.UseShellExecute = false;
objClient = new Process();
objClient.StartInfo = objStartInfo;
objClient.EnableRaisingEvents = true;
objClient.OutputDataReceived += new DataReceivedEventHandler(read);
objClient.ErrorDataReceived += new DataReceivedEventHandler(error);
开始:
objClient.StartInfo.FileName = strAppPath;
objClient.StartInfo.Arguments = strArgs;
start();
objClient.BeginErrorReadLine();
objClient.BeginOutputReadLine();
停止:
objClient.Close();
objClient.CancelErrorRead();
objClient.CancelOutputRead();