自动推进状态机与无状态

时间:2013-11-22 10:09:27

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

我最近一直在试验无国籍(C#中的HSM)(https://code.google.com/p/stateless/)并且我遇到了一些我不确定如何实现的事情。

我们说我有以下几种状态:

  • 开始。

  • 连接

  • 完成

我想要实现的是:当建立TCP连接(处于连接状态)时,进入读状态。或者,如果失败,则进入Finish状态(可能会返回Connect状态并在超时后尝试新连接)。

如何使用Stateless实现此自动推进功能,因为从状态内触发触发器会导致堆栈溢出异常?

干杯

1 个答案:

答案 0 :(得分:6)

鉴于我没有找到无状态的原生解决方案来做我所说的,我最终将.Fire(触发器)包装在一个任务中

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

这样做意味着状态机不会按照说法自行前进,而是由外部源提升,解决SO异常。