c# - 限制为 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 的限制。
解决方案
快速检查库显示默认HtmlToPdf.MaxParallelConversions
值为 4。我认为您应该增加它:
HtmlToPdf.MaxParallelConversions = 20;
推荐阅读
- ios - 自定义 TableViewCells 不显示
- stanford-nlp - 在命令行中使用 Stanford nndep Parser 期间,sentenceDelimiter 选项不起作用
- python - 为什么执行此 python 代码时我得到 0?
- google-cloud-platform - 可以连接现有的 SSH 密钥,但不能连接新密钥
- asp.net - 如何修复 SelectListItem 不包含带有 3 个参数的构造函数
- r - 如何根据大写或小写在字符串中添加数字?
- perl - 延迟执行 Perl 代码块
- sql-server - SQL Server XML 路径问题
- redis - 没有 Auth 的 Redis Sentinel 只读从站
- emoji - 比较 UTF-16 中的性别表情符号