Exemplo n.º 1
0
        private void bw_DoWork(DoWorkEventArgs e, JobInfo jobInfo)
        {
            Process p = jobInfo.CreateProcess(ffmpeg);

            p.OutputDataReceived += (s, ea) => Log(ea.Data);
            p.ErrorDataReceived += (s, ea) => Log(ea.Data);

            var item = AddToQueue(jobInfo);

            logger.Log(p.StartInfo.FileName + " " + p.StartInfo.Arguments);

            p.Start();

            p.BeginOutputReadLine();
            p.BeginErrorReadLine();

            p.WaitForExit();

            RemoveFromQueue(item);

            switch (p.ExitCode)
            {
                // Kill()
                case -1:
                    jobInfo.Result = JobInfo.EResult.Cancel;
                    break;

                // OK
                case 0:
                    jobInfo.Result = JobInfo.EResult.Success;
                    break;

                // ffmpeg error
                default:
                    jobInfo.Result = JobInfo.EResult.Error;
                    break;
            }

            e.Result = jobInfo;
            p.Dispose();
        }