c# - 无状态自动推进状态机

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

我最近一直在试验无状态(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/

相关文章:

c# - 如何从 C# 更改 ApplicationBar 上的图像?

UML 通用触发表示法

c++ - 尝试更改游戏状态时出现段错误

c# - 无状态框架与独立的 Forks 一起工作?

c# - .NET 无状态多重 PermitIf

c# - 重新抛出异常困难——异常使程序崩溃而不是重新抛出

c# - 如何将特定数据从一个 View 传输到另一个 View

c# - 状态机 - 无状态与传统的 if-else 代码,难以掌握好处

c# - 如何在填充时停止 CellValueChanged 触发?

prolog - 如何在有限状态机 Prolog 中找到无用状态