我应该触发触发器来改变有限状态机中的OnEntry()方法的状态吗?

时间:2014-05-23 10:38:32

标签: c# .net state-machine stateless stateless-state-machine

我正在使用无状态框架(https://code.google.com/p/stateless/)来为我的应用程序中的有限状态机建模。某些状态应该执行某些逻辑,然后立即进入下一个状态。我想知道这样做的好习惯如下:

            var machine = new StateMachine<State, Trigger>(State.Idle);
            machine.Configure(State.StateA)
            .OnEntry(() =>
            {
                DoSomeStuff();
               _machine.Fire(Trigger.TriggerB);     // move to StateB
            });

这是一款优秀的FSM设计吗?如果没有,那会有什么更好的方法?我试图实现的想法是让某些状态自动将机器推进到下一个状态,而不需要等待DoSomeStuff()完成然后触发机器在下一个状态下移动的外部代码。

1 个答案:

答案 0 :(得分:6)

你似乎在谈论国家推动与国家拉动。两种方法都有效,在某些情况下,一种方法可以更有效。

使用状态推送方法是完全正确的,其中一个状态可以完成一些工作并调用转换。