protected virtual static void OnJobsFlushed(JobsFlushedEventArgs args) { if (LongRunningJobBase.JobsFlushed != null) { LongRunningJobBase.JobsFlushed(null, args); } }
private static LongRunningJobBase[] RaiseJobsFlushing(LongRunningJobBase[] allJobs, DateTime expirationTimeStamp) { JobsFlushingEventArgs args = new JobsFlushingEventArgs(allJobs, expirationTimeStamp); LongRunningJobBase.OnJobsFlushing(args); return(args.ExpiredJobs); }
public static void FlushJobs() { lock (LongRunningJobBase._jobs) { LongRunningJobBase._FlushJobs(); } }
protected virtual static void OnJobsFlushing(JobsFlushingEventArgs args) { args.ExpiredJobs = LongRunningJobBase._jobs.Where(j => j.IsCompleted && j.ExpiresAt < args.ExpirationTimeStamp).ToArray(); if (LongRunningJobBase.JobsFlushing != null) { LongRunningJobBase.JobsFlushing(null, args); } }
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); } }
private static void _FlushJobs() { DateTime now = DateTime.Now; LongRunningJobBase[] expired = LongRunningJobBase.RaiseJobsFlushing(LongRunningJobBase._jobs.ToArray(), now); foreach (LongRunningJobBase job in expired) { LongRunningJobBase._jobs.Remove(job); } LongRunningJobBase.RaiseJobsFlushed(expired, LongRunningJobBase._jobs.ToArray()); }
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); } } }
public JobWaitFinishedEventArgs(LongRunningJobBase job, TTask task, int millisecondsTimeout, bool executionCompleted) : base(job, task, millisecondsTimeout) { this.ExecutionCompleted = executionCompleted; }
public JobWaitingEventArgs(LongRunningJobBase job, TTask task, int millisecondsTimeout) : base(job, task) { this.MillisecondsTimeout = millisecondsTimeout; }
private static void RaiseJobsFlushed(LongRunningJobBase[] expiredJobs, LongRunningJobBase[] currentJobs) { LongRunningJobBase.OnJobsFlushed(new JobsFlushedEventArgs(expiredJobs, currentJobs)); }
public JobEventArgs(LongRunningJobBase job, TTask task) { this.Job = job; this.Task = task; }