自动推进状态机与无状态
我最近一直在试验Stateless(C#中的HSM)( https://code.google.com/p/stateless/ ),而且我遇到了一些我不确定如何实现的东西。
假设我有以下状态:
-
开始。
-
连
-
读
-
完
我想要实现的是:当建立TCP连接(处于连接状态)时,进入读状态。 或者,如果失败,则进入“完成”状态(可以返回“连接”状态并在超时后尝试新连接)。
如何使用Stateless实现此自动推进function,因为从状态内触发触发器会导致堆栈溢出exception?
干杯
鉴于我没有找到无状态的本机解决方案来执行我的要求,我最终将.Fire(触发器)包装在任务中
Task.Start(() => _stateMachine.Fire(trigger));
这样做意味着状态机不会按照说法自行前进,但是它由外部源代替,解决了SOexception。