【问题标题】:Auto advancing state machine with Stateless无状态自动推进状态机
【发布时间】:2013-11-22 10:09:26
【问题描述】:

我最近一直在尝试无状态(C# 中的 HSM)(https://code.google.com/p/stateless/),但我遇到了一些我不确定如何实现的东西。

假设我有以下状态:

  • 开始。

  • 连接

  • 读取

  • 完成

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

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

干杯

【问题讨论】:

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


    【解决方案1】:

    鉴于我在 Stateless 上没有找到本地解决方案来执行我的要求,我最终将 .Fire(trigger) 包装在一个任务中

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

    这样做意味着状态机不会按说法自行推进,而是通过外部来源推进,从而解决 SO 异常。

    【讨论】:

      猜你喜欢
      • 2015-11-24
      • 2022-09-23
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 1970-01-01
      相关资源
      最近更新 更多