我需要编写在 c# 中快速运行的状态机。我喜欢 Windows Workflow Foundation 库,但它太慢而且功能太多(即繁重)。我需要更快的东西,最好是使用图形实用程序来设计图表,然后吐出 c# 代码。有什么建议么?谢谢!
问问题
18715 次
2 回答
21
最终,您可能希望在 .NET 4.0 中重新设计新的WF 引擎,因为它速度更快,并提供流程图活动(不完全是状态机,但适用于大多数场景)和良好的设计器 UI 体验。但由于它尚未发布,因此目前可能不是一个好的答案。
作为替代方案,您可以尝试stateless,这是一个专门用于在 .NET 中创建状态机程序的库。它似乎没有提供 UI,但看起来非常适合实现您的其他目标。
于 2009-10-04T20:19:57.270 回答
6
是的,微软可能在状态机 WF 方面领先于他们的时代。顺序工作流程的接收效果要好得多。
当我们决定使用状态机时,我们推出了自己的状态机。因为我们找不到一个可以接受的带有 UI 的框架。这是我们的步骤。希望他们会帮助你。
创建你的状态接口:
public interface IApplicationState { void ClickOnAddFindings(); void ClickOnViewReport(); //And so forth }
创建状态并让它们实现接口:
public class AddFindingsState : IApplicationState { frmMain _mForm; public AddFindingsState(frmMain mForm) { this._mForm = mForm; } public void ClickOnAddFindings() { } public void ClickOnViewReport() { // Set the State _mForm.SetState(_mForm.GetViewTheReportState()); } }
实例化主类中的状态。
IApplicationState _addFindingsState; IApplicationState _viewTheReportState; _addFindingsState = new AddFindingsState(this); _viewTheReportState = new ViewTheReportState(this);
当用户做一些需要改变状态的事情时,调用方法来设置状态:
_state.ClickOnAFinding();
当然,动作将存在于 IApplicationState 的特定实例中。
于 2009-10-04T20:38:15.690 回答