自动推进状态机与无状态

Omn*_*mni 8 c# state-machine stateless-state-machine

我最近一直在试验Stateless(C#中的HSM)(https://code.google.com/p/stateless/),而且我遇到了一些我不确定如何实现的东西.

假设我有以下状态:

  • 开始.

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

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

干杯

Omn*_*mni 7

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

Task.Start(() => _stateMachine.Fire(trigger));
Run Code Online (Sandbox Code Playgroud)

这样做意味着状态机不会按照说法自行前进,但它由外部源代替,解决了SO异常.