public async Task MainLoopAsync(int timeslicems) { logger.Trace("Entered loop"); var lastPing = DateTime.UtcNow; await SendPingAsync(); while (_looping) { try { await WaitEventAsync(timeslicems); } catch (OperationCanceledException) { logger.Trace("Timeout"); } finally { var now = DateTime.UtcNow; if ((now - lastPing).TotalSeconds >= 30) { await SendPingAsync(); lastPing = now; } if (ScheduledTasks != null) { logger.Trace("Running idle tasks"); ScheduledTasks.Invoke(this); ScheduledTasks = null; } IdleTasks?.Invoke(this); } } }
private void GetState(NotificationMessage message) { IdleTasks tasks = this.serializer.GetState(); Tasks = new ObservableCollection <TaskVM>(); foreach (var task in tasks) { var dt = new DateTime( task.StartYear == 0 ? DateTime.Now.Year : task.StartYear, task.StartMonth == 0 ? DateTime.Now.Month : task.StartMonth, task.StartDay == 0 ? DateTime.Now.Day : task.StartDay, task.StartHour, task.StartMinutes, 0); Tasks.Add(new TaskVM(SimpleIoc.Default.GetInstance <ITimer>()) { Name = task.Name, DateTimeStart = dt, TSpan = new TimeSpan(task.EndHour, task.EndMinutes, 0), TimeSpan = String.Format("{0:0}D/{1:00}:{2:00}.{3:00}", 0, task.EndHour, task.EndMinutes, 0), Status = task.Status, StatusText = Enums.Status.Run.ToString() });; } }
public IdleTasks GetState() { IdleTasks idleTasks = new IdleTasks(); try { var content = File.ReadAllLines("IdlerState.json"); var jsonObject = JsonConvert.DeserializeObject <IdleTasks>(content[0]); foreach (var task in jsonObject) { idleTasks.Add(new IdleTask() { Name = task.Name, EndDay = task.EndDay, EndHour = task.EndHour, EndMinutes = task.EndMinutes, StartDay = task.StartDay, StartHour = task.StartHour, StartMinutes = task.StartMinutes, StartMonth = task.StartMonth, StartYear = task.StartYear }); } } catch (FileNotFoundException) { } return(idleTasks); }
private void PutState(NotificationMessage message) { IdleTasks tasks = new IdleTasks(); foreach (var task in Tasks) { tasks.Add(new IdleTask() { Name = task.Name, StartDay = task.DateTimeStart.Day, StartHour = task.DateTimeStart.Hour, StartMinutes = task.DateTimeStart.Minute, StartMonth = task.DateTimeStart.Month, EndHour = task.TSpan.Hours, EndDay = task.TSpan.Days, EndMinutes = task.TSpan.Minutes, Status = task.Status, StatusText = Enums.Status.Run.ToString() }); } this.serializer.SaveState(tasks); }
public static bool IsTask(IdleTasks task) { return((_tasks & task) == task); }
public static void Clear() { _tasks = IdleTasks.None; }
public static void RemoveTask(IdleTasks task) { _tasks &= ~task; }
public static void AddTask(IdleTasks task) { _tasks |= task; }
public void SaveState(IdleTasks tasks) { var json = JsonConvert.SerializeObject(tasks); File.WriteAllLines("IdlerState.json", new[] { json }); }