我最近一直在试验无国籍(C#中的HSM)(https://code.google.com/p/stateless/)并且我遇到了一些我不确定如何实现的事情。
我们说我有以下几种状态:
开始。
连接
读
完成
我想要实现的是:当建立TCP连接(处于连接状态)时,进入读状态。或者,如果失败,则进入Finish状态(可能会返回Connect状态并在超时后尝试新连接)。
如何使用Stateless实现此自动推进功能,因为从状态内触发触发器会导致堆栈溢出异常?
干杯
答案 0 :(得分:6)
鉴于我没有找到无状态的原生解决方案来做我所说的,我最终将.Fire(触发器)包装在一个任务中
Task.Start(() => _stateMachine.Fire(trigger));
这样做意味着状态机不会按照说法自行前进,而是由外部源提升,解决SO异常。