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; }
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); } }