void t_Elapsed(object sender, ElapsedEventArgs e) { try { //LogInfor.GetLogger<TimerLogger>().WriteInfo(_baseKey.Format() + " - Start job", "", ""); if (UnitContainer != null) { //Store the info of timer if (!this.Parameters.AllKeys.Contains(JobDictionary.JOB_INTERNAL_TIMER_PATTERN)) { this.Parameters.Add(JobDictionary.JOB_INTERNAL_TIMER_PATTERN, null); } if (!this.Parameters.AllKeys.Contains(JobDictionary.JOB_INTERNAL_TIMER_TIME)) { this.Parameters.Add(JobDictionary.JOB_INTERNAL_TIMER_TIME, t.Interval.ToString()); } UnitContainer.InvokeALL(this.Parameters); } } catch { } finally { //Collect garbage manually GC.Collect(); GC.WaitForFullGCComplete(); //Raise event manually t.Enabled = true; //LogInfor.GetLogger<TimerLogger>().WriteInfo(_baseKey.Format() + " - Left time[" + (t.Interval / 100).ToString() + "s]", "", ""); } }
public override void Run() { var baseKey = new JobMessage() { Category = "01", Name = this.Name, BaseKey = Guid.NewGuid() }; //the time at which the job will run var currentBaseTimePoint = DateTime.Now.Date.Add(startSpan); var baseDate = DateTime.Now <= currentBaseTimePoint?currentBaseTimePoint.AddDays(-1) : currentBaseTimePoint; while (_running) { var nextDay = baseDate.AddDays(1); //current data is greater than baseDate if the job is running slowly while (nextDay < DateTime.Now) { baseDate = nextDay; nextDay = nextDay.AddDays(1); } var baseTime = nextDay - baseDate; if (!TimePending.Pending(baseTime, baseDate, baseKey)) { if (UnitContainer != null && _running) { //Store the info of timer if (!this.Parameters.AllKeys.Contains(JobDictionary.JOB_INTERNAL_TIMER_PATTERN)) { this.Parameters.Add(JobDictionary.JOB_INTERNAL_TIMER_PATTERN, null); } if (!this.Parameters.AllKeys.Contains(JobDictionary.JOB_INTERNAL_TIMER_TIME)) { this.Parameters.Add(JobDictionary.JOB_INTERNAL_TIMER_TIME, Parameters["jobTime"]); } UnitContainer.InvokeALL(this.Parameters); } baseDate = nextDay; GC.Collect(); GC.WaitForFullGCComplete(); } } }
private void _run() { if (UnitContainer != null && _running) { //Store the info of timer if (!this.Parameters.AllKeys.Contains(JobDictionary.JOB_INTERNAL_TIMER_PATTERN)) { this.Parameters.Add(JobDictionary.JOB_INTERNAL_TIMER_PATTERN, JobTimeFormatter.Pattern); } if (!this.Parameters.AllKeys.Contains(JobDictionary.JOB_INTERNAL_TIMER_TIME)) { this.Parameters.Add(JobDictionary.JOB_INTERNAL_TIMER_TIME, JobTimeFormatter.RawTime); } UnitContainer.InvokeALL(this.Parameters); } GC.Collect(); GC.WaitForFullGCComplete(); }