【问题标题】:Limit threads for Windows Workflow限制 Windows 工作流的线程
【发布时间】:2015-09-28 21:56:06
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    • 2021-12-20
    相关资源
    最近更新 更多