Esempio n. 1
0
        public async Task StopAsync(CancellationToken cancellationToken = default)
        {
            if (_currentlyExecutingTasks == null)
            {
                return;
            }
            _cancellationTokenSource.Cancel();
            await Task.WhenAny(
                _currentlyExecutingTasks,
                _waiterService.WaitUntilCanceled(_cancellationTokenSource.Token)
                );

            cancellationToken.ThrowIfCancellationRequested();
        }
Esempio n. 2
0
        public async Task StartAsync(CancellationToken cancellationToken = default)
        {
            _workers.Add(WriteRequestsToChannelAsync(cancellationToken));

            foreach (var elevatorMover in _requestsHandler)
            {
                _workers.Add(elevatorMover.HandleRequestsAsync(cancellationToken));
            }

            await Task.WhenAny(
                Task.WhenAll(_workers.ToArray()),
                _waiterService.WaitUntilCanceled(cancellationToken)
                );

            cancellationToken.ThrowIfCancellationRequested();
        }