예제 #1
0
        private static void ExecuteTask(ScheduledTask scheduledTask)
        {
            logger.InfoFormat("Start executing scheduled task {0}", scheduledTask.Name);
            var sw = new Stopwatch();
            sw.Start();

            Task.Factory
                .StartNew(scheduledTask.Task, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default)
                .ContinueWith(task =>
                    {
                        sw.Stop();

                        if (task.IsFaulted)
                        {
                            task.Exception.Handle(ex =>
                            {
                                logger.Error(String.Format("Failed to execute scheduled task {0}", scheduledTask.Name), ex);
                                return true;
                            });
                        }
                        else
                        {
                            logger.InfoFormat("Scheduled task {0} run for {1}", scheduledTask.Name, sw.Elapsed.ToString());
                        }
                    });
        }
예제 #2
0
 private Schedule(TimeSpan timeSpan)
 {
     scheduler     = Configure.Instance.Builder.Build <IScheduler>();
     scheduledTask = new ScheduledTask {
         Every = timeSpan
     };
 }
예제 #3
0
 private void DeferTask(ScheduledTask task)
 {
     bus.Defer(task.Every, new Messages.ScheduledTask
         {
             TaskId = task.Id,
             Name = task.Name,
             Every = task.Every
         });
 }
예제 #4
0
        private static void ExecuteTask(ScheduledTask scheduledTask)
        {
            logger.InfoFormat("Start executing scheduled task {0}", scheduledTask.Name);

            var sw = new Stopwatch();
            sw.Start();

            Task.Factory
                .StartNew(scheduledTask.Task, TaskCreationOptions.None)
                .ContinueWith(_ =>
                                  {
                                      sw.Stop();
                                      logger.InfoFormat("Scheduled task {0} run for {1}", scheduledTask.Name, sw.Elapsed.ToString());
                                  });
        }
예제 #5
0
 public void Add(ScheduledTask scheduledTask)
 {
     scheduledTasks.Add(scheduledTask.Id, scheduledTask);
 }
예제 #6
0
 public void Schedule(ScheduledTask task)
 {
     scheduledTaskStorage.Add(task);
     logger.DebugFormat("Task {0}/{1} scheduled with timeSpan {2}", task.Name, task.Id, task.Every);
     DeferTask(task);
 }
예제 #7
0
 private void DeferTask(ScheduledTask task)
 {
     bus.Defer(task.Every, new Messages.ScheduledTask {
         TaskId = task.Id
     });
 }
예제 #8
0
 public void Schedule(ScheduledTask task)
 {
     scheduledTaskStorage.Add(task);
     logger.DebugFormat("Task {0}/{1} scheduled with timespan {2}", task.Name, task.Id, task.Every);
     DeferTask(task);
 }
 public void Add(ScheduledTask scheduledTask)
 {
     scheduledTasks.Add(scheduledTask.Id, scheduledTask);
 }
예제 #10
0
 private Schedule(TimeSpan timeSpan)
 {
     scheduler = Configure.Instance.Builder.Build<IScheduler>();
     scheduledTask = new ScheduledTask { Every = timeSpan };
 }