C#RedirectStandardOutput和RedirectStandardInput如何在父进程异常退出时终止子进程

时间:2014-10-24 17:46:55

标签: c# process.start processstartinfo

我的应用程序启动了一个控制台应用程序。捕获输出并发送控制台应用程序输入。一切都很好。当我完成控制台应用程序时,我可以毫无问题地退出currentProcess。当我的主应用程序崩溃或不规则退出时,我的问题发生。 ConsoleExeFile保留在任务管理器中,现在正在耗尽CPU的全部内核。然后我必须在任务管理器中杀死ConsoleExeFile。

        //  Set the options.
        ProcessStartInfo processStartInfo = new ProcessStartInfo(ConsoleExeFile, "");

        //  Set the options.
        processStartInfo.UseShellExecute = false;
        processStartInfo.ErrorDialog = false;
        processStartInfo.CreateNoWindow = true;

        //  Specify redirection.
        processStartInfo.RedirectStandardError = false;
        processStartInfo.RedirectStandardInput = true;
        processStartInfo.RedirectStandardOutput = true;

        //  Create the process.
        currentProcess = new Process();
        currentProcess.EnableRaisingEvents = true;
        currentProcess.StartInfo = processStartInfo;
        currentProcess.Exited += new EventHandler(currentProcess_Exited);
        currentProcess.OutputDataReceived += currentProcess_OutputDataReceived;

        //  start the process.
        currentProcess.Start();

0 个答案:

没有答案