c# - 我应该触发触发器以从有限状态机中的 OnEntry() 方法更改状态吗?

标签 c# .net state-machine 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() 完成,然后触发机器进入下一个状态。

最佳答案

您似乎在谈论状态插入与状态拉动。两种方法都有效,一种方法在某些情况下可能更有效。

采用状态推送方法非常好,其中一个状态执行一些工作并调用转换。

关于c# - 我应该触发触发器以从有限状态机中的 OnEntry() 方法更改状态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23827054/

相关文章:

c# - 如何为 web api 返回对象格式的数据?

c# - Control.ClientRectangle 与 Control.DisplayRectangle

spring - Fork 和 Join 在 spring 状态机中(并行执行)

c - 使用 Plecs 的 C 语言状态机

ruby-on-rails - 在数据库中存储工作流(状态机)。最好的方法是什么?

c# - 无法在类库应用程序中找到 security.dll 库

C# Properties.Settings 属性不设置任何值

c# - 等待 QueueUserWorkItem 完成

c# - Web 浏览器 Hook 和自动化

c# - 我可以将 ASP.NET MVC 与常规 ASP.NET Web 表单一起使用吗