/// <summary> /// statistic event override /// </summary> /// <param name="event"></param> public void Write(StatisticEvent <int> @event) { if (@event.Metric != StatisticType.WorkersLog) { return; } lock (_pipelineId) { var metric = new ActiveWorkersLogMessage { Timestamp = DateTime.Now, PipelineId = _pipelineId, ActiveWorkers = @event.Value }; _storage.Value.AddToList(new StorageKey(_pipelineId, $"log:{@event.Metric}"), metric); if (_dispatcherLock.IsLocked()) { return; } _dispatcherLock.Lock(); if (_taskDispatcher == null) { _taskDispatcher = new BackgroundTaskDispatcher(new StorageContext(_storage.Value)); } _taskDispatcher.StartNew(new ActiveWorkersLogCleanupTask(_dispatcherLock, new StorageKey(_pipelineId, $"log:{@event.Metric}"))); } }
public OperationManager(IUnitOfWork unitOfWork, ILogger <OperationManager> logger, IBackgroundTaskDispatcher dispatcher, IServiceProvider serviceProvider) { _operationRepository = unitOfWork.OperationRepository; _logger = logger; _dispatcher = dispatcher; _serviceProvider = serviceProvider; }