示例#1
0
        public async Task Run(string[] args)
        {
            _logger.Log("Starting Application");
            ExtendedConsole.PrintHelpText();

            while (!_cts.IsCancellationRequested)
            {
                var key = Console.ReadKey();
                ExtendedConsole.BlankLine();
                switch (key.Key)
                {
                case ConsoleKey.W:
                    //This could be for example on an event or message received from RabbitMQ, etc...
                    await _finiteStateMachine.TriggerAction(TransportActions.WakeUp);

                    break;

                case ConsoleKey.T:
                    await _finiteStateMachine.TriggerAction(TransportActions.TakeTrain);

                    break;

                case ConsoleKey.S:
                    await _finiteStateMachine.TriggerAction(TransportActions.FallAsleep);

                    break;

                case ConsoleKey.L:
                    _logger.Log(_finiteStateMachine.GetCurrentState());
                    break;

                case ConsoleKey.Escape:
                case ConsoleKey.E:
                    _cts.Cancel();
                    break;

                default:
                    Console.WriteLine($"You Pressed {key.Key}");
                    ExtendedConsole.PrintHelpText();
                    ExtendedConsole.BlankLine();
                    break;
                }
            }

            _logger.Log($"Closing Application");
        }