1

我一直在尝试在我的 ASP.NET 应用程序中使用 WF(实际上,它是 ASP.NET MVC ......但它是 MVC 而不是 WebForms 的事实根本不重要)。

现在,我可以运行 WF 并且它工作正常,等等,但它以异步方式启动,因此 WF 的任何结果(好坏)都会丢失页面生命周期。

我发现一篇MSDN 文章说在 ASP.NET 应用程序中,我们需要

  • 放入WorkflowRuntimeApplication状态
  • WorkflowRuntime实例已ManualWorkflowSchedulerService添加到它(无论是什么)。
  • 需要时使用此应用程序状态工作流实例。

这与我学习的方式不同:

  • 使 WorkflowRuntime 成为静态对象,该对象在需要时首先创建。
  • 在您要运行的新工作流上使用此静态 WorkflowRuntime 实例。

那么......哪种方式更好?我们需要将其粘贴到应用程序中吗?两者有什么区别?

我知道这里实际上有两个问题......

  • 应用程序状态与静态对象(使用锁/空或双空检查
  • DefaultWorkFlowSchedulerServiceManualWorkFlowSchedulerService

干杯!

编辑:

4

1 回答 1

4

我不确定您的第一个问题(尽管我怀疑它们是等效的)。但是,我确信第二个问题:你一定要选择ManualWorkflowSchedulerService. 主要原因如下:

  • 这是在工作流实例空闲之前阻止宿主应用程序执行的唯一方法。请注意,您必须明确使用该RunWorkflow方法。
  • ManualWorkflowSchedulerService重用发出 ASP.NET Web 请求的线程来运行工作流实例。这可确保在任何时候,工作流运行时中的活动线程数都等于 ASP.NET 进程中的活动 Web 请求数。

查看此示例了解更多信息。

于 2008-11-19T21:01:51.943 回答