限制 Windows 工作流的线程

Limit threads for Windows Workflow

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

据我从 Windows 工作流文档中了解到,这将根据需要创建新线程,以对在 ParalleForEach Activity 中枚举的集合进行操作。

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

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

有人知道限制 Windows Workflow 创建的线程数量的方法吗?或者有人对可以做得更好的方法有任何建议吗? Parallel 循环中的所有项目都相互独立,我想尽快处理集合 (16000) 中的所有项目。最初它的处理速度约为每分钟 300 个项目,但随着线程数增加和处理的项目越来越多,它会降低到每分钟约 60 个项目。

这是一个限制并行活动的示例activity。

https://msdn.microsoft.com/en-us/library/vstudio/ee620808(v=vs.100).aspx