我需要编写在c#中运行速度快的状态机。 我喜欢Windows Workflow Foundation库,但它太慢而且拥挤的功能(即很重)。我需要更快的东西,理想情况下使用图形工具来设计图表,然后吐出c#代码。 有什么建议? 谢谢!
答案 0 :(得分:21)
最终,您可能需要新重新设计的WF engine in .NET 4.0,因为它更快并且提供流程图活动(不是状态机,但适用于大多数情况)和良好的设计器UI体验。但由于它还没有发布,现在可能不是一个好的答案。
作为替代方案,您可以尝试stateless,这是一个专门用于在.NET中创建状态机程序的库。它似乎不提供用户界面,但看起来非常适合实现其他目标。
答案 1 :(得分:6)
是的,微软可能已经超过了他们使用State Machine 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的特定实例中。