IRONSOFTWAREHOME
MISES À JOUR POUR LES DÉVELOPPEURS

C# BackgroundWorker (Comment ça fonctionne pour les développeurs)

Jacob Mellor, Directeur technique @ Team Iron
Jacob Mellor
Updated: 21 avril 2026

La génération de PDF avec IronPDF est une tâche courante pour les développeurs .NET—surtout lors de la création de rapports dynamiques, de factures ou de systèmes d'automatisation de documents. Mais si vous avez déjà déclenché la génération de PDF sur le thread principal de l'interface utilisateur dans une application Windows Forms ou WPF, vous avez probablement vu votre interface utilisateur se figer ou devenir non réactive. C'est particulièrement vrai lors du rendu de contenu HTML volumineux ou du traitement de mises en page PDF complexes.

C'est là que la classe C# BackgroundWorker intervient. Cet article explique comment intégrer IronPDF avec BackgroundWorker pour gérer les opérations asynchrones dans une application de bureau sans verrouiller l'interface utilisateur.

Pourquoi utiliser BackgroundWorker avec IronPDF ?

Gardez votre interface utilisateur réactive

Lorsque vous exécutez des tâches gourmandes en CPU ou liées aux entrées/sorties comme la génération de PDF sur le thread principal, cela verrouille l'interface utilisateur. Les utilisateurs ne peuvent pas cliquer, faire glisser ou interagir avec l'application pendant qu'elle est occupée. En utilisant un objet BackgroundWorker, vous pouvez déplacer le travail vers un thread séparé, gardant votre interface rapide et utilisable pendant le traitement en arrière-plan.

Parfait pour la génération de rapports et les tâches de longue durée

Si votre application implique l'exportation de données, la conversion de HTML en PDF ou le rendu de rapports détaillés—déléguer cela à un travailleur en arrière-plan rend votre application plus professionnelle et performante.

Compatible avec les applications WinForms héritées

Bien que les applications modernes utilisent souvent async/await, de nombreux anciens projets bénéficient encore de BackgroundWorker pour sa simplicité et son support de conception dans Visual Studio.

Qu'est-ce que IronPDF?

C# BackgroundWorker (Comment ça fonctionne pour les développeurs) : Figure 1 - IronPDF

IronPDF est une puissante bibliothèque .NET conçue pour générer, modifier et travailler avec des documents PDF en C#. Cela utilise un navigateur Chromium sans tête sous le capot, permettant aux développeurs de convertir du HTML, du CSS, du JavaScript, et même des pages web complexes en PDF de qualité d'impression précise. Contrairement aux générateurs de PDF traditionnels, IronPDF rend les documents exactement comme ils apparaîtraient dans un navigateur—en respectant la mise en page, les polices, les images et les styles pixel par pixel.

Caractéristiques clés

  • Conversion HTML en PDF – Rendre des chaînes HTML, des URL, ou des pages web complètes en PDF.
  • Rendu d'images et de texte – Ajouter des en-têtes, pieds de page, filigranes, et images par programmation.
  • Fusion et division de PDF – Combiner plusieurs documents ou extraire des pages spécifiques.
  • Remplissage de formulaires et annotations – Travailler avec des formulaires PDF interactifs.
  • Aucune dépendance externe – Fonctionne sans Adobe Acrobat ou Microsoft Office installé.

IronPDF prend en charge .NET Framework, .NET Core, et .NET 6/7+, ce qui le rend idéal pour les applications .NET à la fois de bureau et basées sur le web.

Installation d'IronPDF via NuGet

Pour commencer, installez IronPDF dans votre projet à l'aide du gestionnaire de packages NuGet :

PM > Install-Package IronPdf

Cela ajoutera toutes les références nécessaires pour que vous puissiez commencer à utiliser les fonctionnalités puissantes de ChromePdfRenderer, HtmlToPdf, et autres d'IronPDF.

Pour cet exemple, nous utiliserons une application Windows Forms créée avec Visual Studio, avec un bouton qui déclenche la génération du PDF et une étiquette pour indiquer quand le processus est terminé.

Implémentation de BackgroundWorker pour IronPDF

Maintenant, nous utiliserons les exemples de code suivants pour décomposer le processus d'utilisation de BackgroundWorker de manière structurée et sûre :

Étape 1 – Définir le BackgroundWorker

Vous pouvez créer et configurer un BackgroundWorker soit dans le concepteur, soit dans le code. Voici l'approche par code :

private void SetupBackgroundWorker()
{
    // new backgroundworker worker instance
    worker = new BackgroundWorker(); // dowork event handler
    worker.DoWork += PdfWorker_DoWork;
    worker.RunWorkerCompleted += PdfWorker_RunWorkerCompleted; // final result handler
}

Cela initialise le travailleur et connecte les événements nécessaires pour l'exécution et l'achèvement en arrière-plan.

Étape 2 – Gérer l'événement DoWork

La méthode DoWork s'exécute sur un thread différent, effectuant l'opération en arrière-plan (générant le PDF) :

private void PdfWorker_DoWork(object sender, DoWorkEventArgs e)
{
    var Renderer = new ChromePdfRenderer();
    // Simulate input from UI or parameters
    string htmlContent = "<h1>Monthly Report</h1><p>Generated with IronPDF.</p>";
    string outputPath = Path.Combine(Environment.CurrentDirectory, "Report.pdf");
    // Generate PDF
    var pdf = Renderer.RenderHtmlAsPdf(htmlContent);
    pdf.SaveAs(outputPath);
    // Optionally pass result info
    e.Result = outputPath; // pass value to RunWorkerCompleted
}

Remarque : Vous ne pouvez pas interagir avec les contrôles de l'interface utilisateur ici car cela s'exécute sur un thread de travail.

Étape 3 – Utiliser RunWorkerCompleted pour notifier l'achèvement

Une fois le thread en arrière-plan terminé, vous pouvez mettre à jour l'interface utilisateur en toute sécurité avec les résultats.

private void PdfWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    if (e.Error != null)
    {
        MessageBox.Show("Error: " + e.Error.Message);
    }
    else
    {
        string savedPath = e.Result.ToString();
        MessageBox.Show("PDF created at:\n" + savedPath);
    }
}

Étape 4 – Déclencher BackgroundWorker depuis l'interface utilisateur

Ajoutez un bouton Démarrer pour exécuter la tâche en arrière-plan lorsqu'il est cliqué :

private void btnGeneratePDF_Click(object sender, EventArgs e)
{
    if (pdfWorker == null)
        SetupBackgroundWorker();
    if (!pdfWorker.IsBusy)
    {
        btnGeneratePDF.Enabled = false;
        pdfWorker.RunWorkerAsync(); // execute method in background
    }
}

Exemple de code complet

Voici tout réuni dans un seul extrait fonctionnel Windows Forms :

using System;
using System.ComponentModel;
using IronPdf;
using System.IO;
using System.Windows.Forms;
namespace TestApp
{
    public partial class Form1 : Form
    {
        private BackgroundWorker worker;
        public Form1()
        {
            InitializeComponent();
            SetupBackgroundWorker();        }
        private void SetupBackgroundWorker()
        {
            worker = new BackgroundWorker();
            worker.DoWork += PdfWorker_DoWork;
            worker.RunWorkerCompleted += PdfWorker_RunWorkerCompleted;
        }
        private void btnGeneratePDF_Click(object sender, EventArgs e)
        {
            if (!worker.IsBusy)
            {
                btnGeneratePDF.Enabled = false;
                worker.RunWorkerAsync();
            }
        }
        private void PdfWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            var Renderer = new ChromePdfRenderer();
            string htmlContent = "<h1>Report</h1><p>This PDF was generated in the background.</p>";
            string outputPath = Path.Combine(Environment.CurrentDirectory, "Report.pdf");
            var pdf = Renderer.RenderHtmlAsPdf(htmlContent);
            pdf.SaveAs(outputPath);
            e.Result = outputPath;
        }
        private void PdfWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            btnGeneratePDF.Enabled = true;
            if (e.Error != null)
            {
                MessageBox.Show("Failed: " + e.Error.Message);
            }
            else
            {
                MessageBox.Show("PDF created: " + e.Result.ToString());
            }
        }
        private void btnGeneratePDF_Click_1(object sender, EventArgs e)
        {
            if (!worker.IsBusy)
            {
                btnGeneratePDF.Enabled = false;
                worker.RunWorkerAsync();
            }
        }
    }
}

Sortie du formulaire

C# BackgroundWorker (Comment ça fonctionne pour les développeurs) : Figure 2 - Sortie du formulaire après création de PDF

Sortie PDF

C# BackgroundWorker (Comment ça fonctionne pour les développeurs) : Figure 3 - Sortie PDF

Bonnes pratiques

Éviter l'accès à l'interface utilisateur dans DoWork

Le gestionnaire d'événements DoWork s'exécute sur un thread différent, vous ne pouvez donc pas accéder directement aux éléments de l'interface utilisateur. Utilisez RunWorkerCompleted ou des appels Invoke() de contrôle pour des mises à jour sécurisées de l'interface utilisateur.

Soutien pour l'annulation asynchrone

Si votre tâche est longue, activez WorkerSupportsCancellation = true et surveillez CancellationPending à l'intérieur de DoWork pour soutenir l'annulation demandée.

Utiliser les mises à jour de progression du rapport (facultatif)

Vous pouvez activer WorkerReportsProgress = true et utiliser l'événement ProgressChanged pour afficher une barre de progression ou des messages.

Valider l'argument d'entrée

Lors de l'utilisation de RunWorkerAsync(argument), validez l'argument dans DoWork et retournez les résultats de toute méthode via e.Result.

Conclusion

Utiliser BackgroundWorker avec IronPDF vous permet d'effectuer des tâches de rendu PDF lourdes sur un thread en arrière-plan, gardant votre application réactive. Cela est particulièrement précieux lorsque vous travaillez avec des applications WinForms ou WPF qui nécessitent des mises à jour réactives de l'interface utilisateur pendant des tâches de longue durée comme la génération de PDF.

En manipulant le gestionnaire d'événements dowork, en surveillant le résultat final, et en mettant à jour votre interface utilisateur en toute sécurité dans l'événement runworkercompleted, vous assurez que vos opérations en arrière-plan fonctionnent sans accroc.

Bien que async/await soit souvent le choix standard pour les nouvelles applications, BackgroundWorker reste un outil fiable pour les projets hérités ou WinForms. Que vous exportiez des rapports ou génériez des documents à la volée, cette approche vous aidera à tirer le meilleur parti d'IronPDF tout en gardant votre application fluide et conviviale.

Prêt à essayer par vous-même ?

Téléchargez l'essai gratuit d'IronPDF et commencez à créer des solutions PDF puissantes en C# dès aujourd'hui. L'essai vous donne un accès complet aux fonctionnalités présentées dans cet article—sans carte de crédit requise.

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, la transformant aux côtés du PDG Cameron Rimington en une entreprise de plus de 50 personnes au service de la NASA, de Tesla et d'agences gouvernementales mondiales.

...
Lire la suite

Articles connexes

Key in blue circle

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

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

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 IronPDF
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