仅限4个子流程实例

时间:2018-05-25 15:30:15

标签: c# .net async-await task-parallel-library

请考虑以下代码。

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().AsParallel().ForAll()Threading的不同实现,但没有任何帮助增加并行运行的实际进程数。我开始认为这是Windows 10的限制。

1 个答案:

答案 0 :(得分:1)

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

HtmlToPdf.MaxParallelConversions = 20;