什么是Max Simultaneous Workflows更换?

时间:2011-09-07 14:12:44

标签: .net workflow-foundation workflow-foundation-4 threadpool

主要问题:

我正在使用Workflow Foundation 4.0,其中WorkflowRuntime已被WorkflowApplication替换为单个实例的工作流主机。

我希望控制同时运行的并发Workflow实例的数量。在WF 3.5及更早版本中,可以在MaxSimultaneousWorkflows使用的DefaultWorkflowSchedulerService上设置WorkflowRuntime属性,并且可以实现此类限制。如何使用WF 4.0进行相同的操作?

背景以及我为什么要这样做

在我的应用程序中,我想同时安排数百个工作流实例,并且我为每个实例创建一个新的WorkflowApplication实例,并在循环中调用WorkflowApplication上的“run”。

每个WorkflowApplication都有自己的DbContext实例,用于持久化和从SqlServer读取数据。

当同时运行的WorkflowApplication线程数量相当小(比如几十个实例)时,一切都很有效。但是,当我测试安装了数百个工作流实例的应用程序时,我发现DbContext使用的SqlConnection超时等待来自ThreadPool的线程。

因此,我希望限制可运行的WorkflowApplication实例的最大数量,默认情况下.Net决定的大约50%,以便在.NET ThreadPool for SqlConnection和Asp.Net中保留合理数量的线程。 (它也在一台单独的AppDomain中的机器上运行)。

0 个答案:

没有答案