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; }
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); }