限制Windows Workflow的线程

时间:2015-09-28 21:56:06

标签: c# .net performance workflow-foundation-4

我正在开发一个使用Windows Workflow的应用程序。工作流的一个区域使用运行AsyncCodeActivity的Parallel.ForEach活动。您可以在下面的屏幕截图中看到这一点。 RunPolicyWorkflow活动是AsyncCodeActivity。

enter image description here

根据我对Windows Workflow文档的理解,这将根据需要创建新线程,以便对ParalleForEach Activity中枚举的集合进行操作。

我在Parallel Loop中有大约16000个项目。在循环内部(在RunPolicyWorkflow Activity期间)我正在做一些CPU工作,但大部分时间都花在将结果保存到SQL Server实例上。使用资源监视器来关注我的进程时,我注意到此进程中有大约2,000个线程正在运行工作流。

看起来我的应用程序在创建的线程越多越慢。我的电脑只有8个逻辑处理器,所以我很确定这不是很好的优化。

有没有人知道限制Windows Workflow正在创建的线程数量的方法?或者有没有人有任何建议可以做得更好?并行循环中的所有项目彼此独立,我想尽快处理集合中的所有项目(16000)。最初它的处理速度约为每分钟300件,但随着线程数越来越多,处理的物品越来越多,每分钟的处理量降至约60件。

1 个答案:

答案 0 :(得分:1)