IRONSOFTWAREHOME

Comment générer des PDF avec Async & Multithreading en C#

Chipego
Chipego Kalinda
Updated: 17 septembre 2026

IronPDF permet de générer des PDF hautes performances en C# à l'aide d'opérations asynchrones et du multithreading, réduisant ainsi le temps de traitement par lots jusqu'à 65 % par rapport aux méthodes synchrones pour les scénarios de rendu HTML complexes.

Démarrage rapide : Convertir du HTML en PDF de manière asynchrone avec IronPDF

Commencez avec la génération de PDF asynchrone avec IronPDF en seulement quelques lignes de code.

Avec la méthode RenderHtmlAsPdfAsync, vous pouvez convertir efficacement le contenu HTML en PDF, optimisant ainsi la performance de votre application. Ce guide montre comment tirer parti des opérations asynchrones pour une génération de PDF performante, idéale pour le traitement par lots et les environnements multithreads.

  1. 1Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. 2Copiez et exécutez cet extrait de code.

    var pdf = await IronPdf.ChromePdfRenderer.RenderHtmlAsPdfAsync("<h1>Hello World!</h1>");
    C#
  3. 3Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit
    arrow pointer

Comment implémenter la génération asynchrone de PDF en C#?

IronPDF supporte pleinement les opérations asynchrones en utilisant des méthodes de rendu telles que RenderHtmlAsPdfAsync. La mise en œuvre asynchrone dans IronPDF s'appuie sur le modèle asynchrone basé sur les tâches (TAP) pour permettre des opérations de génération de PDF non bloquantes. Cette approche bénéficie au rendu de contenu HTML complexe ou au traitement simultané de requêtes PDF. Pour une référence complète des méthodes, consultez la documentation des méthodes de rendu.

La génération asynchrone de PDF empêche le gel de l'interface utilisateur dans les applications de bureau et améliore le débit des requêtes dans les applications web. Utiliser des motifs await permet à votre application de gérer d'autres opérations pendant que le rendu PDF est en cours, améliorant ainsi la réactivité et l'expérience utilisateur.

Pourquoi utiliser des méthodes asynchrones pour la génération de PDF ?

Les méthodes asynchrones offrent des avantages clés pour les flux de travail de génération de PDF. Ils maintiennent la réactivité des applications lors d'opérations gourmandes en ressources, permettent une meilleure utilisation des ressources sur les processeurs multicœurs et améliorent l'évolutivité dans les environnements de serveurs. Lors de la gestion de conversions HTML à PDF complexes, les opérations asynchrones évitent les problèmes de dépassement de délai et améliorent l'expérience de l'utilisateur.

using IronPdf;
using System.Threading.Tasks;

// Instantiate ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();

string[] htmlStrings = {"<h1>Html 1</h1>", "<h1>Html 2</h1>", "<h1>Html 3</h1>"};

// Create an array to store the tasks for rendering
var renderingTasks = new Task<PdfDocument>[htmlStrings.Length];

for (int i = 0; i < htmlStrings.Length; i++)
{
    int index = i; // Capturing the loop variable
    renderingTasks[i] = Task.Run(async () =>
    {
        // Render HTML to PDF
        return await renderer.RenderHtmlAsPdfAsync(htmlStrings[index]);
    });
}

// Wait for all rendering tasks to complete
// await Task.WhenAll(renderingTasks);

Quels sont les modèles courants de traitement par lots ?

Le traitement par lots des PDF nécessite une attention particulière à l'utilisation de la mémoire et aux performances. Les motifs efficaces incluent l'utilisation de Task.WhenAll pour l'exécution parallèle de plusieurs générations de PDF, la mise en œuvre de motifs producteur-consommateur avec des canaux pour de grands lots, et l'utilisation d'exemples de traitement parallèle de la documentation IronPDF.

// Batch processing with progress tracking
public async Task<List<PdfDocument>> ProcessBatchAsync(List<string> htmlContents, IProgress<int> progress)
{
    var renderer = new ChromePdfRenderer();
    var results = new List<PdfDocument>();
    var completed = 0;
    
    var tasks = htmlContents.Select(async html => {
        var pdf = await renderer.RenderHtmlAsPdfAsync(html);
        Interlocked.Increment(ref completed);
        progress?.Report(completed);
        return pdf;
    });
    
    results.AddRange(await Task.WhenAll(tasks));
    return results;
}

Comment gérer les erreurs dans les opérations PDF asynchrones ?

La gestion des erreurs dans les opérations PDF asynchrones nécessite des stratégies complètes de gestion des exceptions. Utilisez des blocs catch dans les méthodes asynchrones, mettez en œuvre une logique de nouvel essai pour les échecs transitoires et envisagez d'utiliser Polly pour des politiques de nouvel essai avancées. Pour un dépannage détaillé des performances, IronPDF offre des fonctionnalités de journalisation étendues.

public async Task<PdfDocument> RenderWithRetryAsync(string html, int maxRetries = 3)
{
    var renderer = new ChromePdfRenderer();
    
    for (int i = 0; i < maxRetries; i++)
    {
        try
        {
            return await renderer.RenderHtmlAsPdfAsync(html);
        }
        catch (Exception ex) when (i < maxRetries - 1)
        {
            // Log the exception
            await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, i))); // Exponential backoff
        }
    }
    
    throw new InvalidOperationException("Failed to render PDF after maximum retries");
}

Comment utiliser le multithreading pour la génération de PDF?

IronPDF est sûr pour les threads et prend en charge le multithreading lors de l'utilisation du moteur de rendu ChromePdfRenderer. Notez que le multithreading est limité sur les machines macOS. Le moteur de rendu Chrome offre d'excellentes caractéristiques de sécurité des threads et de performance pour les opérations concurrentes.

Le motif Parallel.ForEach fonctionne bien pour traiter les PDF en lot, vous permettant de tirer parti de tous les cœurs de CPU disponibles de manière efficace. Pour des exemples complets de génération multithread, reportez-vous à la documentation d'IronPDF.

Quand choisir le multithreading plutôt que l'asynchrone?

Le multithreading est idéal pour les opérations liées à l'unité centrale, lorsque vous devez traiter plusieurs PDF simultanément avec des ressources système suffisantes. Choisissez le multithreading lorsque vous traitez des lots importants de PDF sur des systèmes multicœurs, lorsque chaque génération de PDF est indépendante et lorsque l'utilisation de la mémoire peut être contrôlée. Async est meilleur pour les opérations liées aux E/S et pour maintenir la réactivité de l'application.

Quelles sont les considérations relatives à la sécurité des threads ?

Le ChromePdfRenderer d'IronPDF est conçu pour être sûr pour les threads, mais certaines considérations s'appliquent. Créez des instances de rendu séparées pour chaque thread lors de l'utilisation de paramètres personnalisés, évitez de partager des instances PdfDocument entre les threads sans synchronisation, et surveillez la consommation de mémoire lors de la gestion de grands documents simultanément. La vue d'ensemble de l'installation fournit des détails supplémentaires sur la configuration d'IronPDF pour une sécurité optimale des threads.

// Thread-safe PDF generation with custom settings per thread
public void ProcessPdfsInParallel(List<string> htmlContents)
{
    Parallel.ForEach(htmlContents, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount }, 
        html =>
        {
            // Create a new renderer instance for each thread
            var renderer = new ChromePdfRenderer
            {
                RenderingOptions = new ChromePdfRenderOptions
                {
                    MarginTop = 10,
                    MarginBottom = 10,
                    PaperSize = IronPdf.Rendering.PdfPaperSize.A4
                }
            };
            
            var pdf = renderer.RenderHtmlAsPdf(html);
            pdf.SaveAs($"output_{Thread.CurrentThread.ManagedThreadId}_{DateTime.Now.Ticks}.pdf");
        });
}

Combien de threads simultanés dois-je utiliser?

Le nombre optimal de threads simultanés dépend des cœurs du processeur, de la mémoire disponible et de la complexité du PDF. Les lignes directrices générales incluent l'utilisation de Environment.ProcessorCount pour les opérations nécessitant beaucoup de CPU, la limitation à 2-4 threads pour les PDF nécessitant beaucoup de mémoire, et la surveillance des ressources système pour trouver la configuration optimale. Les exemples d'async démontrent différentes stratégies de threading.

Ma bibliothèque préférée de ce genre est IronPDF. Elle permet une manipulation rapide et efficace des fichiers PDF. Elle dispose également de nombreuses fonctionnalités précieuses, comme l'exportation au format PDF/A et la signature numérique des documents PDF.

Milan Jovanovic

Microsoft MVP

Voir l'étude de cas

IronOCR signifie que nous pouvons économiser 40 000 $ par an grâce au traitement manuel, tout en améliorant la productivité et en libérant des ressources pour des tâches à fort impact. Je le recommande vivement.

Brent Matzelle

Directeur technique, OPYN

Voir l'étude de cas

Iron Suite joue un rôle crucial dans nos opérations. Ce sont des outils qui augmentent l'efficacité de l'entreprise, y compris la création de plans d'étage et l'amélioration de la gestion des stocks.

David Jones

Ingénieur logiciel principal, Agorus Build

Voir l'étude de cas

Quelles améliorations des performances puis-je attendre?

Une comparaison montre des différences de performance significatives entre les approches de rendu. Un délai de 5 secondes est ajouté lors du rendu avec la classe WaitFor pour simuler un rendu HTML complexe. Vous trouverez ci-dessous un tableau comparatif des performances obtenues à l'aide des différentes techniques décrites ci-dessus.

Pourquoi l'asynchrone est-il plus performant que le synchrone?

Rendu normalRendu asynchroneRendu multithread
15.75 secondes05.59 secondes05.68 secondes

Les opérations asynchrones sont excellentes parce qu'elles permettent une gestion efficace des ressources du pool de threads, empêchent le blocage du thread principal et permettent une meilleure utilisation de l'unité centrale pendant les opérations d'entrée/sortie. L'amélioration des performances provient du lancement simultané de plusieurs opérations de rendu au lieu d'attendre que chacune d'entre elles se termine de manière séquentielle.

Comment puis-je mesurer les performances de mon application ?

Pour mesurer les performances de la génération de PDF, il est nécessaire de procéder à une analyse comparative et à un suivi appropriés. Utilisez System.Diagnostics.Stopwatch pour des mesures de timing précises, mettez en œuvre des compteurs de performance personnalisés pour la surveillance de production, et utilisez des insights d'application ou des outils APM similaires. Envisagez d'utiliser les exemples du guide de démarrage rapide comme base de référence pour les tests de performance.

public async Task<PerformanceMetrics> MeasurePerformanceAsync(string html, int iterations)
{
    var metrics = new PerformanceMetrics();
    var renderer = new ChromePdfRenderer();
    var stopwatch = new Stopwatch();
    
    // Warm-up run
    await renderer.RenderHtmlAsPdfAsync(html);
    
    for (int i = 0; i < iterations; i++)
    {
        stopwatch.Restart();
        await renderer.RenderHtmlAsPdfAsync(html);
        stopwatch.Stop();
        
        metrics.AddMeasurement(stopwatch.ElapsedMilliseconds);
    }
    
    return metrics;
}

Quels sont les facteurs qui influencent la vitesse de génération des PDF ?

Plusieurs facteurs influent sur les performances de la génération de PDF. La complexité du HTML, y compris l'exécution de JavaScript et le rendu CSS, affecte directement le temps de traitement. Le chargement de ressources externes, telles que les images et les polices, peut entraîner des retards. Les ressources système telles que l'unité centrale, la mémoire et les entrées/sorties de disque jouent un rôle crucial. La configuration d'IronPDF, notamment les options de rendu et les paramètres du moteur, influe également sur la vitesse. La compréhension de ces facteurs permet d'optimiser votre flux de travail de génération de PDF pour une efficacité maximale.

Pour les scénarios complexes impliquant un JavaScript lourd ou un rendu différé, envisagez d'utiliser des mécanismes WaitFor pour garantir un rendu complet de la page avant la génération du PDF. Cette approche garantit un résultat précis tout en maintenant des caractéristiques de performance prévisibles.

Questions Fréquemment Posées

Quelle amélioration des performances puis-je attendre de la génération asynchrone de PDF ?

Les opérations asynchrones et le multithreading d'IronPDF peuvent réduire le temps de traitement par lots jusqu'à 65 % par rapport aux méthodes synchrones, en particulier lors du rendu de contenus HTML complexes. Le gain de performance réel dépend de facteurs tels que la complexité du HTML, les ressources du système et le nombre d'opérations simultanées.

Quel est le moyen le plus simple de convertir HTML en PDF de manière asynchrone ?

La méthode la plus simple consiste à utiliser la méthode RenderHtmlAsPdfAsync d'IronPDF. Une seule ligne de code suffit : `var pdf = await IronPdf.ChromePdfRenderer.RenderHtmlAsPdfAsync("Hello World !");`, vous pouvez convertir efficacement du contenu HTML en PDF tout en maintenant la réactivité de l'application.

Pourquoi devrais-je utiliser des méthodes asynchrones au lieu de la génération synchrone de PDF ?

Les méthodes asynchrones dans IronPDF empêchent le gel de l'interface utilisateur dans les applications de bureau, améliorent le débit des requêtes dans les applications web, permettent une meilleure utilisation des ressources sur les processeurs multicœurs et améliorent l'évolutivité dans les environnements de serveur. Elles sont particulièrement utiles lors de la conversion complexe de HTML en PDF ou du traitement simultané de plusieurs demandes de PDF.

Quel modèle asynchrone la bibliothèque utilise-t-elle pour les opérations PDF ?

IronPDF met en œuvre le modèle asynchrone basé sur les tâches (TAP) pour ses opérations asynchrones, notamment des méthodes telles que RenderHtmlAsPdfAsync. Ce modèle permet des opérations de génération de PDF non bloquantes et s'intègre parfaitement aux mots-clés async/await de C#.

Comment puis-je traiter plusieurs PDF en parallèle pour améliorer les performances ?

IronPDF prend en charge le traitement par lots à l'aide de modèles tels que Task.WhenAll pour l'exécution parallèle de plusieurs générations de PDF, Parallel.ForEach pour le multithreading dans le traitement des PDF, et les modèles producteur-consommateur avec canaux pour les lots de grande taille. Ces approches optimisent l'utilisation des ressources et réduisent considérablement le temps de traitement total.

What are common error handling strategies in async PDF operations with IronPDF?

Common strategies include using `try`-`catch` blocks within async methods, implementing retry logic with tools like `Polly`, and leveraging IronPDF's logging capabilities for performance troubleshooting.

How can I handle complex HTML content in async PDF generation?

For complex HTML content, use IronPDF's async methods to prevent timeout issues and improve user experience. Consider employing mechanisms like `WaitFor` to ensure full rendering before PDF conversion.

How do I measure PDF generation performance in IronPDF?

Measure performance by using `System.Diagnostics.Stopwatch` for timing, implementing custom performance counters, and leveraging application insights. The Quickstart examples can serve as a baseline for performance testing.

What factors affect the speed of PDF generation with IronPDF?

Factors include HTML complexity, JavaScript execution, CSS rendering, external resource loading, and system resources like CPU and memory. IronPDF configuration and engine settings also play a crucial role.

Prêt à commencer ?

Nuget Downloads 21,105,021Version :2026.9vient de sortir

Obtenez votre GRATUIT

Clé d'essai de 30 jours instantanément.

bullet_checkedAucune carte de crédit ou création de compte requise
bullet_testTester en production
sans filigranes
bullet_calendarProduit entièrement fonctionnel
pendant 30 jours
bullet_supportSupport technique 24/5
pendant l'essai
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise
Bibliothèque C# NuGet pour PDF
Installer avec NuGet

Version : 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet
  2. Sélectionnez Parcourir et recherchez « IronPDF »
  3. Sélectionnez le package et installez
C# PDF DLL
Télécharger DLL

Version : 2026.9

ou téléchargez l'installateur Windows ici.

  1. Téléchargez et décompressez IronPDF à un emplacement tel que ~/Libs dans votre répertoire de solution
  2. Dans l'explorateur de solutions Visual Studio, faites un clic droit sur Références. Sélectionnez Parcourir, « IronPDF.dll »

Licences à partir de 749 $

Vous avez une question ? Contactez notre équipe de développement.

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

OR
bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise
Bibliothèque C# NuGet pour PDF
Installer avec NuGet

Version : 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet
  2. Sélectionnez Parcourir et recherchez « IronPDF »
  3. Sélectionnez le package et installez
C# PDF DLL
Télécharger DLL

Version : 2026.9

ou téléchargez l'installateur Windows ici.

  1. Téléchargez et décompressez IronPDF à un emplacement tel que ~/Libs dans votre répertoire de solution
  2. Dans l'explorateur de solutions Visual Studio, faites un clic droit sur Références. Sélectionnez Parcourir, « IronPDF.dll »

Licences à partir de 749 $