Beispiel #1
0
 public static void FlushJobs()
 {
     lock (LongRunningJobBase._jobs)
     {
         LongRunningJobBase._FlushJobs();
     }
 }
Beispiel #2
0
 protected LongRunningJobBase(Task task)
 {
     this.ID          = Guid.NewGuid();
     this._nestedTask = task;
     this._bgTask     = new Task(this._Worker);
     lock (LongRunningJobBase._jobs)
     {
         LongRunningJobBase._FlushJobs();
         LongRunningJobBase._jobs.Add(this);
     }
 }
Beispiel #3
0
        public static TLongRunningJobType GetJob <TLongRunningJobType, TTaskType>(Guid id)
            where TLongRunningJobType : LongRunningJobBase <TLongRunningJobType, TTaskType>
            where TTaskType : Task
        {
            TLongRunningJobType result;

            lock (LongRunningJobBase._jobs)
            {
                LongRunningJobBase._FlushJobs();
                result = LongRunningJobBase._jobs.OfType <TLongRunningJobType>().FirstOrDefault(j => j.ID.Equals(id));
            }

            return(result);
        }
Beispiel #4
0
 protected virtual void OnJobCompleted(JobEventArgs <Task> args)
 {
     try
     {
         this.Error = args.Task.Exception;
     }
     catch { }
     finally
     {
         LongRunningJobBase._FlushJobs();
         args.Job.ExpiresAt   = DateTime.Now.Add((LongRunningJobBase.MaxJobAge > TimeSpan.Zero) ? LongRunningJobBase.MaxJobAge : LongRunningJobBase.DefaultMaxJobAge);
         args.Job.IsCompleted = true;
         if (this.JobCompleted != null)
         {
             this.JobCompleted(this, args);
         }
     }
 }