1

我正在使用 Workflow 使用 ParallelForEach 运行并行 AsyncCodeActivities。当我这样做时,如果有大量活动(比如 1000 个异步活动),那么我在运行代码时会收到 System.OutOfMemory 异常。

当我通过调试我的代码对此进行更多研究时,我发现我的“EndExecute”方法没有被一系列异步代码活动调用,即使它已经完成了它的过程。因此,内存不断堆积而没有被释放,最后引发 System.OutOfMemory 异常。我试图将线程数减少到 8 个(我机器中的处理器数),但即便如此,我还是收到了异常。

请帮助我,我被这个问题困扰了一个多星期。我无法从其他任何地方找到解决方案。

4

1 回答 1

0

如果您使用的是 .NET 框架 4.0,我认为通过将 SetMaxThreads() 调用为较小的数字来限制最大线程池大小会有所帮助。您可以通过调用 GetMaxThread() 来获取默认的最大线程大小。

当前抛出 OutOfMemory 异常,因为运行时将继续分配线程池线程,直到内存可用。

您可能需要根据每个活动所需的内存调整此数字。

于 2013-03-28T15:07:52.880 回答