/// <summary> /// 构建任务进程 /// </summary> /// <param name="context"></param> /// <returns></returns> private void BuildProcess(StartupContext context) { System.Diagnostics.Process process = new System.Diagnostics.Process(); // 为子任务进程增加免守护标识 context.AddArg(WithoutDefendCmd); // 配置进程信息,父子进程通过重定向错误输出来通信 process.StartInfo = new System.Diagnostics.ProcessStartInfo( System.IO.Path.Combine(Environment.CurrentDirectory, SimpleConfig.SimpleShellName), context.GetCmd()) { WorkingDirectory = System.Environment.CurrentDirectory , RedirectStandardInput = false, RedirectStandardOutput = false, RedirectStandardError = true, UseShellExecute = false }; // 为子进程增加事件处理 process.EnableRaisingEvents = true; process.Exited += new EventHandler(process_Exited); // 注册退出处理事件 process.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(process_OutputDataReceived); // 注册通信处理事件 this.CurrentProc = process; }