Автоматическое продвижение конечного автомата с Stateless

В последнее время я экспериментировал с Stateless (HSM в C#) ( https://code.google.com/p/stateless/) и столкнулся с чем-то, чего я не совсем уверен, как достичь.

Допустим, у меня есть следующие состояния:

  • Начните.

  • соединять

  • Читать

  • Конец

Я пытаюсь достичь: когда TCP-соединение (в состоянии Connect) установлено, перейдите в состояние Read. Или, если произошел сбой, перейдите в состояние "Завершить" (где он может вернуться в состояние "Соединение" и попытаться установить новое соединение после истечения времени ожидания).

Как я могу реализовать эту функцию автоматического продвижения с помощью Stateless, поскольку запуск триггеров из состояний может вызвать исключение переполнения стека?

ура

1 ответ

Решение

Учитывая, что я не нашел нативного решения для Stateless, чтобы делать то, что я просил, я закончил оборачивать.Fire(триггер) в задачу

Task.Start(() => _stateMachine.Fire(trigger));

Это означает, что конечный автомат не продвигает себя, как говорится, а скорее продвигается внешним источником, решая исключение SO.

Другие вопросы по тегам