public ScheduleStrategiesBase(IQueueWorker queueWorker, ICounterBlocked processCount, TimeSpan timeLimit, IWorkerHandler workerHandler)
 {
     _processCount = processCount;
     _timeLimit    = timeLimit;
     _handler      = workerHandler;
     _queueWorker  = queueWorker;
     _workerRunner = CreateWorkerRunner(_processCount, workerHandler, _timeLimit);
 }
Ejemplo n.º 2
0
 protected override async Task StartCore(IWorkerRunner workerRunner, IQueueWorker queueWorker, CancellationToken cancellationToken)
 {
     while (!cancellationToken.IsCancellationRequested || !queueWorker.IsEmpty)
     {
         await queueWorker.ReceiveAsync()
         .ContinueWith(async invoker => await workerRunner.ExcecuteInvoker(await invoker), TaskContinuationOptions.OnlyOnRanToCompletion);
     }
 }
Ejemplo n.º 3
0
        protected override async Task StartCore(IWorkerRunner workerRunner, IQueueWorker queueWorker, CancellationToken cancellationToken)
        {
            while (!cancellationToken.IsCancellationRequested || !queueWorker.IsEmpty)
            {
                var invoker = await queueWorker.ReceiveAsync();

                await workerRunner.ExcecuteInvoker(invoker);
            }
        }
 protected override async Task StartCore(IWorkerRunner workerRunner, IQueueWorker queueWorker, CancellationToken cancellationToken)
 {
     while (!cancellationToken.IsCancellationRequested || !queueWorker.IsEmpty)
     {
         await _threadLimit.WaitAsync()
         .ContinueWith(async t =>
                       await queueWorker.ReceiveAsync()
                       .ContinueWith(async invoker => await workerRunner.ExcecuteInvoker(await invoker)
                                     .ContinueWith(t2 => _threadLimit.Release()))
                       );
     }
 }
 protected abstract Task StartCore(IWorkerRunner workerRunner, IQueueWorker queueWorker, CancellationToken cancellationToken);