Краткий ответ: создайте событие третьего типа, которое вызывает внутренний переход в обоих состояниях, и опубликуйте его в своем бесконечном цикле в main.
Длинный ответ начинается с вопроса, почему кто-то захочетсделай это?По крайней мере, по моему опыту, конечные автоматы должны быть скорее концепцией, управляемой событиями, которая реагирует на внешние события.Использование опроса (который выглядит как то, что вам нужно) внутри конечного автомата не совсем то, для чего нужны конечные автоматы.Я бы проводил опрос за пределами конечного автомата (в основном в вашем случае), и когда я получал событие, то отправлял его на конечный автомат.
Для состояния также характерно устанавливать таймер (снова внеконечный автомат), чтобы опубликовать «событие тайм-аута» (или любое другое событие в этом отношении) через определенный промежуток времени.На мой взгляд, это хорошая практика - отменить этот запрос при выходе из государства, которое его запросило.Даже если в некоторых случаях это кажется бесполезным, потому что нет никакой причины покидать состояние, оно, несомненно, помогает плохому программисту по обслуживанию, который реализует новое событие, выходящему из состояния, а затем вырывает голову, задаваясь вопросом, почему он получил состояние «событие тайм-аута» трипереходы позже.
Если вы новичок в конечных автоматах, я настоятельно рекомендую книгу Миро Самека: http://www.amazon.com/exec/obidos/ASIN/0750687061/quantumleap06-20