Esempio n. 1
0
        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;
        }