9

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

假设我有以下状态:

  • 开始。

  • 连接

  • 结束

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

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

干杯

4

1 回答 1

8

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

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

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

于 2014-05-07T18:14:03.937 回答