首页 > 解决方案 > 限制为 4 个子流程实例

问题描述

考虑以下代码。

using System.Threading.Tasks;
using System.Collections.Generic;
using HiQPdf;

namespace bla 
{
    class Program 
    {
        private static List<Task> tlist = new List<Task>();

        static void Main(string[] args) 
        {
            for (int i = 0; i < 21; i++) 
            {
                tlist.Add(Task.Run(() => 
                {
                    var r = new HtmlToPdf();
                    var pdf = r.ConvertUrlToMemory("google.com");
                }));
            }
            Task.WaitAll(tlist.ToArray());
        }
    }
}

这会创建 20 个 HiQPDF 实例,这些实例会创建 google 的图像。问题是,HiQPDF 创建了一个 HiQPDF.dep 和 HiQPDF.rda 的实例,它们执行实际工作。并行 HiQPDF 进程的最大数量似乎是 4。这是一个相当长的过程,对我想做的事情至关重要。

我想要的是增加 4 个并发进程的限制。

我尝试使用Parallel.ForEach()and.AsParallel().ForAll()的不同实现,Threading但对于增加并行运行的实际进程数没有任何帮助。我开始认为这是 Windows 10 的限制。

标签: c#.netasync-awaittask-parallel-library

解决方案


快速检查库显示默认HtmlToPdf.MaxParallelConversions值为 4。我认为您应该增加它:

HtmlToPdf.MaxParallelConversions = 20;

推荐阅读