public static void FlushJobs() { lock (LongRunningJobBase._jobs) { LongRunningJobBase._FlushJobs(); } }
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); } }
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); }
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); } } }