我最近一直在试验无状态(C# 中的 HSM)( https://code.google.com/p/stateless/ ),我遇到了一些我不太确定如何实现的事情。
假设我有以下状态:
开始。
连接
阅读
完成
我想要实现的是:当TCP连接(处于Connect状态)建立时,前进到Read状态。或者,如果失败,则前进到 Finish 状态(它可能会返回到 Connect 状态并在超时期限后尝试新的连接)。
我如何使用无状态实现此自动推进功能,因为从状态内触发触发器会导致堆栈溢出异常?
干杯
最佳答案
鉴于我在 Stateless 上没有找到原生解决方案来完成我所要求的,我最终将 .Fire(trigger) 包装在一个任务中
Task.Start(() => _stateMachine.Fire(trigger));
这样做意味着状态机不会按照自己的说法推进自身,而是通过外部来源推进,从而解决 SO 异常。
关于c# - 无状态自动推进状态机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20142185/