Beispiel #1
0
        public void Register(IRegularOperation operation, ScheduleParams scheduleParams)
        {
            if (operationsIndex.Values.Any(x => x.Name.Equals(operation.Name)))
            {
                return;
            }

            scheduler.Register(operation.Name, scheduleParams);
            var timer = new Timer(scheduleParams.PollingPeriod.TotalMilliseconds)
            {
                Enabled = true
            };

            operationsIndex.AddOrUpdate(timer, t => operation, (t, n) => operation);
            timer.Elapsed += Excute;
        }
Beispiel #2
0
 public void SafeLaunch(IRegularOperation operation)
 {
     try
     {
         var beginDateTime = dateTimeFactory.Now;
         if (scheduler.IsItTimeToLaunch(operation.Name, beginDateTime))
         {
             var operationResult = operation.Run();
             if (operationResult.HasValue)
             {
                 loggerFactory.Get <OperationsLauncher>().LogError($"Operation with name {operation.Name} failed", operationResult.Value);
             }
             var endDateTime = dateTimeFactory.Now;
             operationsLog.Append(operation.Name, beginDateTime, endDateTime, !operationResult.HasValue);
         }
     }
     catch (Exception e)
     {
         loggerFactory.Get <OperationsLauncher>().LogError($"Fail to launch operation {operation.Name}", e);
     }
 }