示例#1
0
        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);
                }
            }
        }
示例#2
0
文件: TasksVM.cs 项目: dakob/Idler
        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()
                });;
            }
        }
示例#3
0
文件: Serializer.cs 项目: dakob/Idler
        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);
        }
示例#4
0
文件: TasksVM.cs 项目: dakob/Idler
        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);
        }
示例#5
0
 public static bool IsTask(IdleTasks task)
 {
     return((_tasks & task) == task);
 }
示例#6
0
 public static void Clear()
 {
     _tasks = IdleTasks.None;
 }
示例#7
0
 public static void RemoveTask(IdleTasks task)
 {
     _tasks &= ~task;
 }
示例#8
0
 public static void AddTask(IdleTasks task)
 {
     _tasks |= task;
 }
示例#9
0
文件: Serializer.cs 项目: dakob/Idler
        public void SaveState(IdleTasks tasks)
        {
            var json = JsonConvert.SerializeObject(tasks);

            File.WriteAllLines("IdlerState.json", new[] { json });
        }