internal DispatcherToken(ICounterBlocked counterProcess,
                                 IQueueWorker queueWorker,
                                 ActionDispatcherSettings actionDispatcherSettings,
                                 CancellationTokenSource cancellationTokenSource,
                                 ICounterBlocked chainCounterBlocked,
                                 IWorkerHandler workerHandler)
        {
            _processCount = counterProcess;

            _chainCounter  = chainCounterBlocked;
            _workerHandler = workerHandler;
            _queueWorker   = queueWorker;

            _cancellationTokenSource = cancellationTokenSource;

            _actionDispatcherSettings = actionDispatcherSettings;
        }
Esempio n. 2
0
        public IDispatcherToken Start(ActionDispatcherSettings config = null)
        {
            config = config ?? new ActionDispatcherSettings();

            var processCount = new CounterBlocked();

            var queueWorker = new QueueWorker();

            var cancellationTokenSource = new CancellationTokenSource();

            var chainCounter = new CounterBlockedStrong(new CounterBlocked());

            var dispatcherToken = new DispatcherToken(processCount, queueWorker, config, cancellationTokenSource, chainCounter, _handler);

            var schedule = config.BuildSchedule(queueWorker, processCount, _handler);

            schedule.Start(cancellationTokenSource.Token);

            return(dispatcherToken);
        }