private static void StartNotificationTimer(Task task) { if (task.EmailInfo == null) { return; } var taskStartingDate = task.Period.StartDate; var dontRunLongerThanValue = MainForm.Form.GetDontRunLongerThanValue(); bool tryToSend = false; System.Threading.Timer timer = null; timer = new System.Threading.Timer((e) => { if (TaskUtils.IsNull(task)) { TimerUtils.DisposeTimer(timer); return; } if (TimeSpanUtils .GetDifference(DateTime.Now, taskStartingDate) > dontRunLongerThanValue) { if (!tryToSend && TaskRunner.IsTaskRunning(task)) { tryToSend = true; EmailUtils.RedirectToSendEmail(task.Name, dontRunLongerThanValue); } TimerUtils.DisposeTimer(timer); } }, null, 0, 3000); var taskTimer = TimerUtils.AddTimer(timer, task.Name, "Notification Timer", 0, 3000); logger.Info($"{taskTimer} is added."); }
private static bool IsDateTimeSpanExceedingLimit(DateTime date) { var difference = TimeSpanUtils.GetDifference(date, DateTime.Now); return(IsTimeSpanExceedingLimit(difference)); }