HTML-to-PDF in C# .NET using Async & MultiThreading
Async and Threading is useful when genearting PDFs in C# and VB.NET in batches or for high performance.
Async
IronPDF fully supports Async using its Async Rendering methods such as ChromeRenderingEngine.RenderHtmlAsPdfAsync
//using IronPdf;
var Renderer = new IronPdf.ChromePdfRenderer();
await using var doc = Renderer.RenderHtmlAsPdfAsync("<h1>Html with CSS and Images</h1>");
doc.SaveAs("pixel-perfect.pdf");
//using IronPdf;
var Renderer = new IronPdf.ChromePdfRenderer();
await using var doc = Renderer.RenderHtmlAsPdfAsync("<h1>Html with CSS and Images</h1>");
doc.SaveAs("pixel-perfect.pdf");
'using IronPdf;
Dim Renderer = New IronPdf.ChromePdfRenderer()
Await var doc = Renderer.RenderHtmlAsPdfAsync("<h1>Html with CSS and Images</h1>")
doc.SaveAs("pixel-perfect.pdf")
Multi-Threading
IronPDF is thread safe and supports multithreading when using the IronPdf.ChromePdfRenderer rendering engine.
One limitation is that multithreading is limited on macOS machines.
We find the Parallel.ForEach
pattern very helpful for batch processing PDFs.
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
var que = new List<string>(){ "<h1>Html</h1>", "<h1>Html with CSS and Images</h1>"};
var Renderer = new IronPdf.ChromePdfRenderer();
Parallel.ForEach(que, html =>
{
using var doc = Renderer.RenderHtmlAsPdfAsync("<h1>Html with CSS and Images</h1>");
//....save to disk
});
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
var que = new List<string>(){ "<h1>Html</h1>", "<h1>Html with CSS and Images</h1>"};
var Renderer = new IronPdf.ChromePdfRenderer();
Parallel.ForEach(que, html =>
{
using var doc = Renderer.RenderHtmlAsPdfAsync("<h1>Html with CSS and Images</h1>");
//....save to disk
});
Imports System
Imports System.Collections.Concurrent
Imports System.Collections.Generic
Imports System.Diagnostics
Imports System.Linq
Imports System.Threading.Tasks
Private que = New List(Of String)() From {"<h1>Html</h1>", "<h1>Html with CSS and Images</h1>"}
Private Renderer = New IronPdf.ChromePdfRenderer()
Parallel.ForEach(que, Sub(html)
Dim doc = Renderer.RenderHtmlAsPdfAsync("<h1>Html with CSS and Images</h1>")
'....save to disk
End Sub)