Example #1
0
        /// <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;
        }