我正在开发一个使用Windows Workflow的应用程序。工作流的一个区域使用运行AsyncCodeActivity的Parallel.ForEach活动。您可以在下面的屏幕截图中看到这一点。 RunPolicyWorkflow活动是AsyncCodeActivity。
根据我对Windows Workflow文档的理解,这将根据需要创建新线程,以便对ParalleForEach Activity中枚举的集合进行操作。
我在Parallel Loop中有大约16000个项目。在循环内部(在RunPolicyWorkflow Activity期间)我正在做一些CPU工作,但大部分时间都花在将结果保存到SQL Server实例上。使用资源监视器来关注我的进程时,我注意到此进程中有大约2,000个线程正在运行工作流。
看起来我的应用程序在创建的线程越多越慢。我的电脑只有8个逻辑处理器,所以我很确定这不是很好的优化。
有没有人知道限制Windows Workflow正在创建的线程数量的方法?或者有没有人有任何建议可以做得更好?并行循环中的所有项目彼此独立,我想尽快处理集合中的所有项目(16000)。最初它的处理速度约为每分钟300件,但随着线程数越来越多,处理的物品越来越多,每分钟的处理量降至约60件。
答案 0 :(得分:1)