IRONSOFTWAREHOME
MISES À JOUR POUR LES DÉVELOPPEURS

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

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

Dans les applications .NET modernes, la programmation événementielle joue un rôle essentiel dans l'amélioration de la réactivité et l'assurance d'expériences utilisateur fluides. Lorsque des tâches comme la génération de PDF prennent du temps, vous ne voulez pas bloquer le thread principal. Au lieu de cela, vous pouvez utiliser des gestionnaires d'événements pour exécuter des tâches de manière asynchrone et réagir une fois qu'un événement se produit, rendant votre application plus interactive et réactive.

Dans ce guide, nous allons vous montrer comment intégrer les méthodes de gestion d'événements C# avec IronPDF pour des flux de travail PDF transparents dans des environnements de bureau et web. Que vous utilisiez WinForms, WPF ou toute autre plateforme basée sur le langage de programmation C#, ce guide couvre vos besoins.

Configuration de Votre Projet IronPDF

Avant de plonger dans la gestion d'événements, configurons rapidement IronPDF dans votre projet .NET.

Installer IronPDF via NuGet

Dans la console du gestionnaire de packages de Visual Studio, exécutez :

PM > Install-Package IronPdf

Cela installe tout ce qui est nécessaire pour commencer à générer des PDF avec IronPDF.

Génération de PDF Basique avec IronPDF

Voici un rapide exemple pour vous assurer qu'IronPDF fonctionne :

using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
pdf.SaveAs("example.pdf");

Une fois cela en place, vous êtes prêt à ajouter des champs d'événements, connecter des délégués enregistrés, et utiliser des types de délégués pour créer des flux de travail événementiels.

Principes fondamentaux des gestionnaires d'événements C# pour les développeurs .NET

Les Bases de la Programmation Événementielle

Avec la programmation événementielle, votre application réagit lorsque un événement se produit, tel qu'un PDF terminant sa génération. C# utilise des délégués comme pointeurs de fonction typés de manière sécurisée, vous permettant de définir comment votre application doit réagir.

Vous déclarez généralement des événements en utilisant le mot-clé event, les connectez à des méthodes de gestion d'événements, et passez des données en utilisant des sous-classes personnalisées EventArgs.

Déclarer un Événement avec le Mot-clé event

C# utilise le mot-clé event pour déclarer des membres événements. Par exemple :

public event EventHandler PdfGenerated;

Cette ligne déclare un champ d'événement nommé PdfGenerated. Elle utilise EventHandler, un délégué intégré avec la liste de paramètres suivante : (object sender, EventArgs e), souvent appelée le modèle de nommage pour les événements dans .NET.

Définir et s'abonner à des événements en C#

Ajouter des Méthodes aux Événements en Utilisant des Délégués

Les événements C# supportent l'ajout de méthodes dynamiquement à l'exécution en utilisant la syntaxe +=. Voici comment :

pdfService.PdfGenerated += (s, e) =>
{
    Console.WriteLine("PDF was generated!");
};

Cette classe abonnée écoute pour l'événement PdfGenerated et exécute un appel de méthode quand il est déclenché.

Données d'Événement Personnalisées

Pour passer des données d'événement telles que le chemin d'accès du fichier généré, définissez une classe dérivée de EventArgs :

public class PdfGeneratedEventArgs : EventArgs
{
    public string FilePath { get; set; } // returned value
}

Redéfinissez ensuite l'événement à l'aide d'un type de délégué générique :

public event EventHandler<PdfGeneratedEventArgs> PdfGenerated;

Cela vous donne des données structurées et typées de façon sécurisée lorsque l'événement est levé, rendant votre logique de réponse plus puissante.

Gestion de Multiples Événements

Vous pouvez définir plusieurs événements :

public event EventHandler PdfGenerationStarted;
public event EventHandler<PdfGeneratedEventArgs> PdfGenerationCompleted;

Chaque champ d'événement est géré par une classe abonnée, permettant des méthodes de gestion d'événements distinctes par étape. Cette séparation des préoccupations a du sens dans des flux de travail complexes.

Utilisation des Gestionnaires d'Événements avec IronPDF

Lors de la génération de gros PDF, il est judicieux d'exécuter IronPDF sur un thread en arrière-plan et de notifier l'interface utilisateur à la fin. Voici comment la conception orientée événements peut aider :

  • Utiliser un BackgroundWorker pour générer des PDF de manière asynchrone
  • Lever des événements lorsque chaque étape est terminée
  • Passer des données de résultat en utilisant des objets de données d'événement

Exemple de Code – Générer des PDF de Manière Asynchrone

L'exemple suivant est le code complet pour utiliser la gestion d'événements avec IronPDF :

using System;
using System.ComponentModel;
using IronPdf;
namespace IronPdfEventHandlerExample
{
    // 1. Define custom EventArgs to carry event data
    public class PdfGeneratedEventArgs : EventArgs
    {
        public string FilePath { get; set; }
    }
    // 2. Main class with event, BackgroundWorker, and logic
    public class PdfGenerator
    {
        // Declare the public event using EventHandler<t>
        public event EventHandler<PdfGeneratedEventArgs> PdfGenerated;
        private readonly BackgroundWorker _worker;
        public PdfGenerator()
        {
            _worker = new BackgroundWorker();
            _worker.DoWork += OnDoWork;
            _worker.RunWorkerCompleted += OnRunWorkerCompleted;
        }
        // Start the async operation
        public void GenerateAsync(string html, string outputPath)
        {
            _worker.RunWorkerAsync(new Tuple<string, string>(html, outputPath));
        }
        // Perform PDF generation in background
        private void OnDoWork(object sender, DoWorkEventArgs e)
        {
            var (html, path) = (Tuple<string, string>)e.Argument;
            var renderer = new HtmlToPdf();
            var pdf = renderer.RenderHtmlAsPdf(html);
            pdf.SaveAs(path);
            e.Result = path;
        }
        // Notify subscribers when the PDF is ready
        private void OnRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            var path = e.Result as string;
            PdfGenerated?.Invoke(this, new PdfGeneratedEventArgs { FilePath = path });
        }
    }
    // 3. Program to wire it all together
    class Program
    {
        public static void Main(string[] args)
        {
            var generator = new PdfGenerator();
            // Subscribe to the PdfGenerated event
            generator.PdfGenerated += OnPdfGenerated;
            Console.WriteLine("Generating PDF asynchronously...");
            generator.GenerateAsync("<h1>Hello, IronPDF!</h1>", "output.pdf");
            Console.WriteLine("Press any key to exit after generation.");
            Console.ReadKey();
        }
        // Event handler for when the PDF is ready
        static void OnPdfGenerated(object sender, PdfGeneratedEventArgs e)
        {
            Console.WriteLine($"PDF generated at: {e.FilePath}");
        }
    }
}

Sortie console

Gestionnaire d'événements C# (Comment cela fonctionne pour les développeurs) : Figure 1 - Sortie de la console

Sortie PDF

Gestionnaire d'événements C# (Comment cela fonctionne pour les développeurs) : Figure 2 - Sortie PDF

Fonctionnalités Clés dans ce Code

  • public event EventHandler<PdfGeneratedEventArgs> : Déclare un événement fortement typé
  • PdfGeneratedEventArgs : Classe personnalisée pour les données d'événement
  • BackgroundWorker : Permet une exécution asynchrone pour éviter le blocage de l'interface utilisateur
  • ?.Invoke(...) : Invocation sécurisée de l'événement
  • Tuple<string, string> : Passe le HTML et le chemin de sortie au thread d'arrière-plan

Conseils pour Travailler avec les Événements dans .NET

1. Éviter le Blocage du Thread UI

Utilisez des gestionnaires d'événements comme RunWorkerCompleted pour effectuer des mises à jour de l'interface utilisateur uniquement après la fin des tâches en arrière-plan.

2. Gérer les Exceptions de Manière Elégante

Enrobez votre logique de travail dans des blocs try-catch à l'intérieur de DoWork et passez les exceptions à RunWorkerCompleted via e.Error.

if (e.Error != null)
{
    MessageBox.Show("Error: " + e.Error.Message);
}

3. Se Désinscrire quand Nécessaire

Dans les applications de longue durée, désinscrivez-vous des événements lorsqu'ils ne sont plus nécessaires pour éviter les fuites de mémoire :

pdfWorker.DoWork -= PdfWorker_DoWork;

Conclusion

L'utilisation des gestionnaires d'événements, des types de délégués et des champs d'événements avec IronPDF ajoute une touche réactive et moderne aux applications .NET. Que vous génériez des documents dans une classe de base, créiez une logique réutilisable dans des classes dérivées, ou exploriez simplement le modèle d'événement de .NET, ce modèle est évolutif et propre.

Quand Utiliser Cette Approche

  • Vous voulez lever un événement lorsqu'une tâche est terminée
  • Vous avez besoin d'une séparation nette entre la logique et l'interface utilisateur
  • Vous travaillez avec BackgroundWorker, des événements et des délégués
  • Vous préférez les mécanismes de pointeur de fonction typé de C#

Alternatives à Explorer

  • async/await et Task.Run pour des flux de travail plus récents
  • IProgress<t> pour des mises à jour en temps réel pendant les longues opérations, IronPDF combiné avec des événements C# rend facile la création d'applications de génération de PDF puissantes et réactives, conçues pour une utilisation pratique. Prêt à mettre en œuvre la génération de PDF orientée événements dans votre application .NET ? Essayez-le avec la version d'essai gratuite d'IronPDF et gardez vos utilisateurs satisfaits grâce à des expériences fluides et sans blocage !
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