/// <summary> /// Stars waiting for the trigger action /// </summary> /// <param name="lastResult">The last result.</param> /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param> public void Start(TaskResult lastResult, ILogger logger, string taskName, bool isApplicationStartup) { DisposeTimer(); DateTime triggerDate; if (lastResult == null) { // Task has never been completed before triggerDate = DateTime.UtcNow.AddHours(1); } else { triggerDate = new[] { lastResult.EndTimeUtc, _lastStartDate }.Max().Add(Interval); } if (DateTime.UtcNow > triggerDate) { triggerDate = DateTime.UtcNow.AddMinutes(1); } var dueTime = triggerDate - DateTime.UtcNow; var maxDueTime = TimeSpan.FromDays(7); if (dueTime > maxDueTime) { dueTime = maxDueTime; } Timer = new Timer(state => OnTriggered(), null, dueTime, TimeSpan.FromMilliseconds(-1)); }
/// <summary> /// Stars waiting for the trigger action /// </summary> /// <param name="lastResult">The last result.</param> /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param> public void Start(TaskResult lastResult, bool isApplicationStartup) { DisposeTimer(); var triggerDate = GetNextTriggerDateTime(); Timer = new Timer(state => OnTriggered(), null, triggerDate - DateTime.Now, TimeSpan.FromMilliseconds(-1)); }
/// <summary> /// Stars waiting for the trigger action /// </summary> /// <param name="lastResult">The last result.</param> /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param> public void Start(TaskResult lastResult, bool isApplicationStartup) { switch (SystemEvent) { case SystemEvent.WakeFromSleep: SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; break; } }
/// <summary> /// Stars waiting for the trigger action /// </summary> /// <param name="lastResult">The last result.</param> /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param> public async void Start(TaskResult lastResult, ILogger logger, string taskName, bool isApplicationStartup) { if (isApplicationStartup) { await Task.Delay(DelayMs).ConfigureAwait(false); OnTriggered(); } }
/// <summary> /// Stars waiting for the trigger action /// </summary> /// <param name="lastResult">The last result.</param> /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param> public void Start(TaskResult lastResult, bool isApplicationStartup) { DisposeTimer(); var now = DateTime.Now; var triggerDate = now.TimeOfDay > TimeOfDay ? now.Date.AddDays(1) : now.Date; triggerDate = triggerDate.Add(TimeOfDay); Timer = new Timer(state => OnTriggered(), null, triggerDate - now, TimeSpan.FromMilliseconds(-1)); }
/// <summary> /// Stars waiting for the trigger action /// </summary> /// <param name="lastResult">The last result.</param> /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param> public void Start(TaskResult lastResult, ILogger logger, string taskName, bool isApplicationStartup) { DisposeTimer(); var now = DateTime.Now; var triggerDate = now.TimeOfDay > TimeOfDay ? now.Date.AddDays(1) : now.Date; triggerDate = triggerDate.Add(TimeOfDay); var dueTime = triggerDate - now; logger.Info("Daily trigger for {0} set to fire at {1}, which is {2} minutes from now.", taskName, triggerDate.ToString(), dueTime.TotalMinutes.ToString(CultureInfo.InvariantCulture)); Timer = new Timer(state => OnTriggered(), null, dueTime, TimeSpan.FromMilliseconds(-1)); }
/// <summary> /// Stars waiting for the trigger action /// </summary> /// <param name="lastResult">The last result.</param> /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param> public void Start(TaskResult lastResult, bool isApplicationStartup) { DisposeTimer(); var triggerDate = lastResult != null ? lastResult.EndTimeUtc.Add(Interval) : DateTime.UtcNow.Add(FirstRunDelay); if (DateTime.UtcNow > triggerDate) { if (isApplicationStartup) { triggerDate = DateTime.UtcNow.AddMinutes(2); } else { triggerDate = DateTime.UtcNow.Add(Interval); } } Timer = new Timer(state => OnTriggered(), null, triggerDate - DateTime.UtcNow, TimeSpan.FromMilliseconds(-1)); }
/// <summary> /// Stars waiting for the trigger action /// </summary> /// <param name="lastResult">The last result.</param> /// <param name="isApplicationStartup">if set to <c>true</c> [is application startup].</param> public void Start(TaskResult lastResult, bool isApplicationStartup) { DisposeTimer(); DateTime triggerDate; if (lastResult == null) { // Task has never been completed before triggerDate = DateTime.UtcNow.AddHours(1); } else { triggerDate = new[] { lastResult.EndTimeUtc, _lastStartDate }.Max().Add(Interval); } if (DateTime.UtcNow > triggerDate) { triggerDate = DateTime.UtcNow.AddMinutes(1); } Timer = new Timer(state => OnTriggered(), null, triggerDate - DateTime.UtcNow, TimeSpan.FromMilliseconds(-1)); }
/// <summary> /// Called when [task completed]. /// </summary> /// <param name="startTime">The start time.</param> /// <param name="endTime">The end time.</param> /// <param name="status">The status.</param> private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status, Exception ex) { var elapsedTime = endTime - startTime; Logger.Info("{0} {1} after {2} minute(s) and {3} seconds", Name, status, Math.Truncate(elapsedTime.TotalMinutes), elapsedTime.Seconds); var result = new TaskResult { StartTimeUtc = startTime, EndTimeUtc = endTime, Status = status, Name = Name, Id = Id }; var hasKey = ScheduledTask as IHasKey; if (hasKey != null) { result.Key = hasKey.Key; } if (ex != null) { result.ErrorMessage = ex.Message; result.LongErrorMessage = ex.StackTrace; } LastExecutionResult = result; ((TaskManager)TaskManager).OnTaskCompleted(this, result); }
/// <summary> /// Called when [task completed]. /// </summary> /// <param name="startTime">The start time.</param> /// <param name="endTime">The end time.</param> /// <param name="status">The status.</param> private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status, Exception ex) { var elapsedTime = endTime - startTime; Logger.Info("{0} {1} after {2} minute(s) and {3} seconds", Name, status, Math.Truncate(elapsedTime.TotalMinutes), elapsedTime.Seconds); var result = new TaskResult { StartTimeUtc = startTime, EndTimeUtc = endTime, Status = status, Name = Name, Id = Id }; if (ex != null) { result.ErrorMessage = ex.Message; } var path = GetHistoryFilePath(); Directory.CreateDirectory(Path.GetDirectoryName(path)); JsonSerializer.SerializeToFile(result, path); LastExecutionResult = result; ((TaskManager) TaskManager).OnTaskCompleted(ScheduledTask, result); }
/// <summary> /// Called when [task completed]. /// </summary> /// <param name="startTime">The start time.</param> /// <param name="endTime">The end time.</param> /// <param name="status">The status.</param> private void OnTaskCompleted(DateTime startTime, DateTime endTime, TaskCompletionStatus status) { var elapsedTime = endTime - startTime; Logger.Info("{0} {1} after {2} minute(s) and {3} seconds", Name, status, Math.Truncate(elapsedTime.TotalMinutes), elapsedTime.Seconds); var result = new TaskResult { StartTimeUtc = startTime, EndTimeUtc = endTime, Status = status, Name = Name, Id = Id }; JsonSerializer.SerializeToFile(result, GetHistoryFilePath(true)); LastExecutionResult = result; ((TaskManager) TaskManager).OnTaskCompleted(ScheduledTask, result); }
public TaskCompletionEventArgs(IScheduledTaskWorker task, TaskResult result) { Task = task; Result = result; }