Пример #1
0
 public static ShareJobFinishedEventArgs Cancel(IShareJob job)
 {
     return(new ShareJobFinishedEventArgs(job)
     {
         WasCancelled = true
     });
 }
Пример #2
0
 public static ShareJobFinishedEventArgs Error(IShareJob job, string message)
 {
     return(new ShareJobFinishedEventArgs(job)
     {
         ErrorMessage = message
     });
 }
Пример #3
0
        public async void RunAllJobs()
        {
            if (IsRunningJob)
            {
                return;
            }

            while (true)
            {
                IShareJob nextJob = null;

                // TryDequeue is thread-safe
                if (!InnerQueue.TryDequeue(out nextJob))
                {
                    AllJobsFinished?.Invoke(this, new EventArgs());
                    return;
                }

                nextJob.StatusUpdate += Job_StatusUpdate;
                nextJob.Finished     += NextJob_Finished;

                IsRunningJob = true;
                CurrentJob   = nextJob;

                JobStarted?.Invoke(this, new ShareJobQueueStatusEventArgs(nextJob, "Started"));

                await nextJob.Execute(); // executes NextJob_Finished when finished

                IsRunningJob             = false;
                CurrentJob.StatusUpdate -= Job_StatusUpdate;
            }
        }
Пример #4
0
        private void Job_StatusUpdate(object sender, ShareJobStatusEventArgs e)
        {
            IShareJob job = (IShareJob)sender;
            ShareJobQueueStatusEventArgs ee = new ShareJobQueueStatusEventArgs(job, e.Message);

            CurrentJobStatusUpdate?.Invoke(this, ee);
        }
Пример #5
0
        private void SkipJobButton_Click(object sender, RoutedEventArgs e)
        {
            // remove the job from the extension's KVS
            IShareJob currentJob = ShareJobQueue.CurrentJob;

            currentJob?.Cancel();

            // continue on with the queue
            ShareJobQueue.RunAllJobs();
        }
Пример #6
0
        private void NextJob_Finished(object sender, ShareJobFinishedEventArgs e)
        {
            IShareJob job = (IShareJob)sender;

            if (e.ErrorMessage != null)
            {
                JobFinished?.Invoke(this, new ShareJobQueueStatusEventArgs(job, "Failed: " + e.ErrorMessage, true));
            }
            else
            {
                JobFinished?.Invoke(this, new ShareJobQueueStatusEventArgs(job, "Finished"));
            }
        }
 public ShareJobQueueStatusEventArgs(IShareJob job, string status, bool failed = false)
 {
     this.Job    = job;
     this.Status = status;
     this.Failed = failed;
 }
Пример #8
0
 public ShareJobFinishedEventArgs(IShareJob job, string url = null)
 {
     this.Job = job;
     this.Url = url;
 }
Пример #9
0
        public void Enqueue(IShareJob shareJob)
        {
            InnerQueue.Enqueue(shareJob);

            NotifyJobEnqueued();
        }