public BatchRunner(TimeSpan batchCollectionTimeLimit, int batchCollectionSizeLimit, int batchFlushSizeLimit, TimeSpan batchOperationTimeOut, TimeSpan batchWorkerStopTimeout, IBatchWorker <TParameter, TResult> batchWorker) { _batchCollectionTimeLimit = batchCollectionTimeLimit; _batchCollectionSizeLimit = batchCollectionSizeLimit; _batchFlushSizeLimit = batchFlushSizeLimit; _batchOperationTimeOut = batchOperationTimeOut; _batchWorkerStopTimeout = batchWorkerStopTimeout; _batchWorker = batchWorker; _workerLock = new object(); _workItems = new Dictionary <Guid, WorkItem <TParameter, TResult> >(); _cancellationTokenSource = new CancellationTokenSource(); _taskStartWaitEvent = new AutoResetEvent(false); _taskEndWaitEvent = new AutoResetEvent(false); }
public ProcessorBackgroundService( ILogger <ProcessorBackgroundService> logger, IServiceScopeFactory scopeFactory, IBatchWorker generatorManager, IBatchNumberWorker multiplierManager ) { _logger = logger; _scopeFactory = scopeFactory; _generatorManager = generatorManager; _generatorManager.UnitDone += NumberGenerated; _multiplierManager = multiplierManager; _multiplierManager.UnitDone += NumberMultiplied; }