C# 仅限子流程的4个实例
考虑以下代码C# 仅限子流程的4个实例,c#,.net,async-await,task-parallel-library,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)
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());
}
}
}
使用System.Threading.Tasks;
使用System.Collections.Generic;
使用HiQPdf;
名称空间bla
{
班级计划
{
私有静态列表tlist=新列表();
静态void Main(字符串[]参数)
{
对于(int i=0;i<21;i++)
{
tlist.Add(Task.Run)(()=>
{
var r=新的HtmlToPdf();
var pdf=r.converturltomery(“google.com”);
}));
}
Task.WaitAll(tlist.ToArray());
}
}
}
这将创建20个HiQPDF实例,创建google的图像。问题是,HiQPDF创建了一个HiQPDF.dep和HiQPDF.rda的实例,它们执行实际工作。并行HiQPDF进程的最大数量似乎是4个。这是一个相当长的过程,对我想做的事情至关重要
我想要的是增加4个并发进程的限制
我试着使用
Parallel.ForEach()
和.AsParallel().ForAll()
,不同的线程实现
,但对增加并行运行的进程的实际数量没有任何帮助。我开始认为这是Windows 10的一个限制。在库中快速检查显示HtmlToPdf的默认值。MaxParallelConversions
为4。我认为你应该增加它:
HtmlToPdf.MaxParallelConversions = 20;
您认为最大值为4的症状可能重复?您是否查看了默认值?这是解决方案。非常感谢。