Exemplo n.º 1
0
        public gMkvExtractMethod ExtractMethod(gMKVExtract argGmkvExtract)
        {
            switch (_ExtractionMode)
            {
            case FormMkvExtractionMode.Tracks:
                return(argGmkvExtract.ExtractMKVSegmentsThreaded);

            case FormMkvExtractionMode.Cue_Sheet:
                return(argGmkvExtract.ExtractMkvCuesheetThreaded);

            case FormMkvExtractionMode.Tags:
                return(argGmkvExtract.ExtractMkvTagsThreaded);

            case FormMkvExtractionMode.Timecodes:
                return(argGmkvExtract.ExtractMKVTimecodesThreaded);

            case FormMkvExtractionMode.Tracks_And_Timecodes:
                return(argGmkvExtract.ExtractMKVSegmentsThreaded);

            case FormMkvExtractionMode.Cues:
                return(argGmkvExtract.ExtractMKVCuesThreaded);

            case FormMkvExtractionMode.Tracks_And_Cues:
                return(argGmkvExtract.ExtractMKVSegmentsThreaded);

            case FormMkvExtractionMode.Tracks_And_Cues_And_Timecodes:
                return(argGmkvExtract.ExtractMKVSegmentsThreaded);

            default:
                throw new Exception("Unsupported Extraction Mode!");
            }
        }
Exemplo n.º 2
0
        private void RunJobs(List <gMKVJobInfo> argJobInfoList)
        {
            _ExceptionBuilder.Length = 0;
            foreach (gMKVJobInfo jobInfo in argJobInfoList)
            {
                try
                {
                    // check for abort
                    if (_AbortAll)
                    {
                        break;
                    }
                    // get job from jobInfo
                    gMKVJob job = jobInfo.Job;
                    // create the new gMKVExtract object
                    _gMkvExtract = new gMKVExtract(job.MKVToolnixPath);
                    _gMkvExtract.MkvExtractProgressUpdated += _gMkvExtract_MkvExtractProgressUpdated;
                    _gMkvExtract.MkvExtractTrackUpdated    += _gMkvExtract_MkvExtractTrackUpdated;
                    // increate the current job index
                    _CurrentJob++;
                    // start the thread
                    Thread myThread = new Thread(new ParameterizedThreadStart(job.ExtractMethod(_gMkvExtract)));
                    jobInfo.StartTime = DateTime.Now;
                    jobInfo.State     = JobState.Running;
                    grdJobs.Refresh();
                    myThread.Start(job.ParametersList);

                    btnAbort.Enabled    = true;
                    btnAbortAll.Enabled = true;
                    gTaskbarProgress.SetState(this, gTaskbarProgress.TaskbarStates.Normal);
                    Application.DoEvents();
                    while (myThread.ThreadState != System.Threading.ThreadState.Stopped)
                    {
                        Application.DoEvents();
                    }
                    jobInfo.EndTime = DateTime.Now;
                    // check for exceptions
                    if (_gMkvExtract.ThreadedException != null)
                    {
                        jobInfo.State = JobState.Failed;
                        grdJobs.Refresh();
                        throw _gMkvExtract.ThreadedException;
                    }
                    else
                    {
                        jobInfo.State = JobState.Completed;
                        grdJobs.Refresh();
                        Application.DoEvents();
                    }
                }
                catch (Exception ex)
                {
                    _ExceptionBuilder.AppendFormat("Exception for job {0}: {1}\r\n", jobInfo.ToString(), ex.Message);
                }
                finally
                {
                    if (_gMkvExtract != null)
                    {
                        _gMkvExtract.MkvExtractProgressUpdated -= _gMkvExtract_MkvExtractProgressUpdated;
                        _gMkvExtract.MkvExtractTrackUpdated    -= _gMkvExtract_MkvExtractTrackUpdated;
                    }
                }
            }
        }