Passer au contenu du pied de page
.NET AIDE

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

Les événements en C# sont une partie fondamentale de la programmation orientée événement. Ils permettent aux objets de communiquer et de notifier les autres lorsque quelque chose d'intéressant se produit. Dans ce guide, nous explorerons les événements et comment les déclarer et les utiliser. Décomposons-le étape par étape pour assurer une compréhension claire. Nous explorerons également IronPDF pour les opérations PDF dans les applications C#.

Qu'est-ce qu'un événement en C# ?

Les événements en C# permettent la communication entre objets. Lorsqu'un événement est déclenché, d'autres objets peuvent y répondre. Les événements reposent sur des délégués, qui agissent comme des pointeurs typés aux méthodes. Un type de délégué d'événement définit la signature des méthodes pouvant gérer l'événement public, assurant la cohérence dans le traitement des données d'événement.

Composants de base des événements

Pour comprendre pleinement les événements, examinons leurs composants principaux :

1. Classe Émettrice

La classe émettrice est la source de l'événement. Elle est responsable de déclarer l'événement et de le déclencher lorsqu'une action ou condition spécifique se produit. Ce processus implique généralement une méthode de gestion d'événement pour déterminer quand l'événement se produit. L'émetteur utilise également un délégué d'événement pour définir la signature des méthodes pouvant gérer l'événement. Par exemple, dans une interface utilisateur graphique (GUI), un contrôle de bouton agit comme émetteur lorsqu'il déclenche un événement « Clic ».

2. Classe Abonnée

La classe abonnée écoute les événements et y réagit. Un abonné enregistre son intérêt pour un événement en attachant une méthode de gestion d'événement à l'événement. Lorsque l'émetteur déclenche l'événement, la méthode de gestion d'événement de l'abonné s'exécute. Un seul événement peut avoir plusieurs abonnés, chacun réagissant différemment lorsque l'événement survient.

3. Délégués

Les délégués sont la base des événements en C#. Ce sont des pointeurs typés vers des méthodes et définissent le contrat que tous les gestionnaires d'événements doivent suivre. Les délégués s'assurent que seules les méthodes avec une signature spécifique peuvent gérer l'événement, fournissant un mécanisme de gestion des événements cohérent et sans erreur.

4. Gestionnaires d'Événements

Les gestionnaires d'événements sont des méthodes dans la classe abonnée qui sont exécutées lorsqu'un événement est déclenché. Ils contiennent la logique pour gérer l'événement, comme la mise à jour de l'interface utilisateur, la journalisation des données, ou l'exécution de calculs. La signature d'un gestionnaire d'événements doit correspondre au type de délégué associé à l'événement. De plus, d'autres classes peuvent utiliser des gestionnaires d'événements pour réagir à des événements partagés. Cela rend l'implémentation des événements plus simple, modulaire et réutilisable.

5. Données d'Événement

Dans de nombreux cas, les événements doivent transmettre des informations supplémentaires aux abonnés. Cela est réalisé en utilisant des classes de données d'événement, qui sont dérivées de la classe de base EventArgs. Les données de l'événement contiennent des détails spécifiques concernant l'événement, comme un message, un statut, ou d'autres informations pertinentes.

Comment déclarer et utiliser les événements en C

Étape 1 : Déclarer un Délégué

Les délégués définissent la signature de méthode pour les gestionnaires d'événements. Dans cet exemple, nous créons un délégué pour représenter le gestionnaire d'événements avec deux paramètres : object sender et EventArgs e.

public delegate void MyEventHandler(object sender, EventArgs e);
public delegate void MyEventHandler(object sender, EventArgs e);
Public Delegate Sub MyEventHandler(ByVal sender As Object, ByVal e As EventArgs)
$vbLabelText   $csharpLabel

Étape 2 : Déclarer un Événement

Les événements sont déclarés en utilisant le mot-clé event et sont basés sur le type de délégué. Voici un exemple :

public class Publisher
{
    public event MyEventHandler Notify; // Declare the event.
}
public class Publisher
{
    public event MyEventHandler Notify; // Declare the event.
}
Public Class Publisher
	Public Event Notify As MyEventHandler ' Declare the event.
End Class
$vbLabelText   $csharpLabel

Étape 3 : Déclencher l'Événement

L'événement est déclenché en appelant le délégué et en passant les paramètres nécessaires.

public void TriggerEvent()
{
    if (Notify != null) // Check if there are subscribers.
    {
        Notify(this, EventArgs.Empty); // Raise the event.
    }
}
public void TriggerEvent()
{
    if (Notify != null) // Check if there are subscribers.
    {
        Notify(this, EventArgs.Empty); // Raise the event.
    }
}
Public Sub TriggerEvent()
	If Notify IsNot Nothing Then ' Check if there are subscribers.
		Notify(Me, EventArgs.Empty) ' Raise the event.
	End If
End Sub
$vbLabelText   $csharpLabel

Étape 4 : S'inscrire à l'Événement

Les abonnés enregistrent les gestionnaires d'événements en utilisant l'opérateur += :

Publisher publisher = new Publisher();
Subscriber subscriber = new Subscriber();
publisher.Notify += subscriber.OnNotify; // Subscribe to the event.
Publisher publisher = new Publisher();
Subscriber subscriber = new Subscriber();
publisher.Notify += subscriber.OnNotify; // Subscribe to the event.
Dim publisher As New Publisher()
Dim subscriber As New Subscriber()
publisher.Notify += subscriber.OnNotify ' Subscribe to the event.
$vbLabelText   $csharpLabel

Étape 5 : Gérer l'Événement

Un gestionnaire d'événements est une méthode dans la classe abonnée qui correspond à la signature du délégué :

public void OnNotify(object sender, EventArgs e)
{
    Console.WriteLine("Event received!");
}
public void OnNotify(object sender, EventArgs e)
{
    Console.WriteLine("Event received!");
}
Public Sub OnNotify(ByVal sender As Object, ByVal e As EventArgs)
	Console.WriteLine("Event received!")
End Sub
$vbLabelText   $csharpLabel

IronPDF : Bibliothèque PDF C

IronPDF, une bibliothèque polyvalente pour travailler avec des PDF en .NET, s'intègre parfaitement aux applications C#. Associé aux événements en C#, il peut fournir une manière dynamique de gérer des scénarios en temps réel, tels que la mise à jour de progression, la gestion des erreurs ou les notifications lors de la génération ou la manipulation de PDF. Explorons cette relation de manière engageante. En C#, les événements sont un moyen de signaler qu'un événement s'est produit. Ils permettent à une partie de votre programme de notifier d'autres parties à propos d'occurrences spécifiques, comme un fichier en cours de traitement, une tâche achevée ou une erreur rencontrée.

Comment IronPDF s'intègre-t-il ?

IronPDF vous permet de générer, modifier, et sécuriser des PDF, et l'intégrer avec des événements peut rendre votre application plus interactive. Par exemple :

  • Suivi de la Progression : Notifier les abonnés du pourcentage d'achèvement lors de la génération d'un rapport PDF volumineux.
  • Gestion des Erreurs : Déclencher un événement si un problème survient lors du rendu ou de la sauvegarde d'un PDF.
  • Actions Personnalisées : Exécuter une logique personnalisée, comme la journalisation ou la mise à jour de l'interface utilisateur, après des opérations PDF spécifiques.

Exemple : Générer un PDF avec des Notifications d'Événements

Voici un simple exemple pour démontrer l'utilisation d'IronPDF avec des événements :

using IronPdf;
using System;

// Program class
class Program
{
    // Define a custom event for progress updates
    public static event Action<int> ProgressUpdated;

    public static void Main()
    {
        License.LicenseKey = "License-Key";
        // Subscribe to the ProgressUpdated event
        ProgressUpdated += DisplayProgress;

        Console.WriteLine("Generating PDF...");
        GeneratePdf(); // Generate the PDF
    }

    // Method to generate PDF and trigger progress updates
    static void GeneratePdf()
    {
        try
        {
            var Renderer = new ChromePdfRenderer();
            for (int i = 0; i <= 100; i += 20)
            {
                // Simulate progress
                System.Threading.Thread.Sleep(500);
                ProgressUpdated?.Invoke(i); // Trigger event with progress value
            }
            // Generate a PDF
            var PdfDocument = Renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF with Events!</h1>");
            PdfDocument.SaveAs("IronPDF/example.pdf");
            ProgressUpdated?.Invoke(100); // Final update
            Console.WriteLine("PDF generated successfully!");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }

    // Event handler to display progress
    static void DisplayProgress(int progress)
    {
        Console.WriteLine($"Progress: {progress}%");
    }
}
using IronPdf;
using System;

// Program class
class Program
{
    // Define a custom event for progress updates
    public static event Action<int> ProgressUpdated;

    public static void Main()
    {
        License.LicenseKey = "License-Key";
        // Subscribe to the ProgressUpdated event
        ProgressUpdated += DisplayProgress;

        Console.WriteLine("Generating PDF...");
        GeneratePdf(); // Generate the PDF
    }

    // Method to generate PDF and trigger progress updates
    static void GeneratePdf()
    {
        try
        {
            var Renderer = new ChromePdfRenderer();
            for (int i = 0; i <= 100; i += 20)
            {
                // Simulate progress
                System.Threading.Thread.Sleep(500);
                ProgressUpdated?.Invoke(i); // Trigger event with progress value
            }
            // Generate a PDF
            var PdfDocument = Renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF with Events!</h1>");
            PdfDocument.SaveAs("IronPDF/example.pdf");
            ProgressUpdated?.Invoke(100); // Final update
            Console.WriteLine("PDF generated successfully!");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }

    // Event handler to display progress
    static void DisplayProgress(int progress)
    {
        Console.WriteLine($"Progress: {progress}%");
    }
}
Imports IronPdf
Imports System

' Program class
Friend Class Program
	' Define a custom event for progress updates
	Public Shared Event ProgressUpdated As Action(Of Integer)

	Public Shared Sub Main()
		License.LicenseKey = "License-Key"
		' Subscribe to the ProgressUpdated event
		AddHandler Me.ProgressUpdated, AddressOf DisplayProgress

		Console.WriteLine("Generating PDF...")
		GeneratePdf() ' Generate the PDF
	End Sub

	' Method to generate PDF and trigger progress updates
	Private Shared Sub GeneratePdf()
		Try
			Dim Renderer = New ChromePdfRenderer()
			For i As Integer = 0 To 100 Step 20
				' Simulate progress
				System.Threading.Thread.Sleep(500)
				RaiseEvent ProgressUpdated(i)
			Next i
			' Generate a PDF
			Dim PdfDocument = Renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF with Events!</h1>")
			PdfDocument.SaveAs("IronPDF/example.pdf")
			RaiseEvent ProgressUpdated(100)
			Console.WriteLine("PDF generated successfully!")
		Catch ex As Exception
			Console.WriteLine($"Error: {ex.Message}")
		End Try
	End Sub

	' Event handler to display progress
	Private Shared Sub DisplayProgress(ByVal progress As Integer)
		Console.WriteLine($"Progress: {progress}%")
	End Sub
End Class
$vbLabelText   $csharpLabel

Événements C# (Comment ça fonctionne pour les développeurs) : Figure 1 - Résultat

Conclusion

Événements C# (Comment ça fonctionne pour les développeurs) : Figure 2 - Licence

Les événements en C#, lorsqu'ils sont combinés avec IronPDF, créent un système puissant pour la génération et la gestion dynamiques de PDF. Les événements fournissent un moyen propre et efficace de gérer les opérations PDF de manière asynchrone, tandis qu'IronPDF offre des fonctionnalités robustes pour la création, l'édition et la manipulation de PDF sur toutes les plateformes .NET. IronPDF offre une version d'essai gratuite pour tester toutes les fonctionnalités sans limitations. Les licences commerciales commencent à $799 et donnent accès à la suite complète de capacités de génération et de traitement de PDF.

Questions Fréquemment Posées

Comment puis-je implémenter des événements C# dans mon application ?

Pour implémenter des événements C#, vous devez définir un délégué qui spécifie la signature du gestionnaire d'événements, déclarer l'événement en utilisant ce délégué, déclencher l'événement au moment approprié, et s'abonner à l'événement avec une méthode qui correspond à la signature du délégué.

Quels sont les composants principaux des événements C# ?

Les composants principaux des événements C# incluent le publisher, qui déclare et déclenche l'événement ; le subscriber, qui écoute l'événement ; les délégués, qui agissent comme des pointeurs type-safe vers des méthodes ; les gestionnaires d'événements, qui s'exécutent lorsque l'événement est déclenché ; et les données d'événement, qui transmettent des informations sur l'événement aux subscribers.

Comment une bibliothèque PDF peut-elle améliorer la gestion des événements C# ?

Une bibliothèque PDF comme IronPDF peut améliorer la gestion des événements C# en vous permettant d'intégrer des notifications déclenchées par des événements dans des tâches de traitement PDF. Cela peut inclure des mises à jour de progression en temps réel, des notifications d'erreurs, et l'exécution de logique personnalisée après certaines opérations PDF.

Comment les délégués soutiennent-ils la gestion des événements en C# ?

Les délégués en C# soutiennent la gestion des événements en définissant la signature de méthode que les gestionnaires d'événements doivent suivre. Ils assurent que seules les méthodes avec la bonne signature peuvent être utilisées pour gérer l'événement, maintenant la sécurité de type et la cohérence.

Quel rôle jouent les gestionnaires d'événements dans les événements C# ?

Les gestionnaires d'événements sont des méthodes qui s'exécutent en réponse à un événement déclenché. Ils contiennent la logique nécessaire pour gérer l'événement et doivent se conformer à la signature définie par le délégué associé à l'événement.

Comment les événements C# peuvent-ils être utilisés pour la génération dynamique de PDF ?

Les événements C# peuvent être utilisés pour la génération dynamique de PDF en intégrant des notifications déclenchées par des événements dans le processus. Cela vous permet de suivre la progression, gérer les erreurs, et effectuer des actions personnalisées pendant la création de PDF en utilisant une bibliothèque comme IronPDF.

Quelles sont les étapes pour déclencher un événement en C# ?

Pour déclencher un événement en C#, vous devez d'abord déclarer l'événement en utilisant un délégué. Ensuite, au sein de la classe publisher, vous déclenchez l'événement en l'invoquant lorsqu'une condition spécifique est remplie. Les subscribers qui ont attaché des gestionnaires d'événements exécuteront leurs méthodes respectives en réponse.

Comment les événements C# améliorent-ils le traitement des PDF dans les applications .NET ?

Les événements C# améliorent le traitement des PDF dans les applications .NET en permettant une gestion asynchrone des opérations PDF. Cela permet des mises à jour en temps réel, la détection d'erreurs et l'invocation de logique personnalisée, rendant le processus de gestion de PDF plus dynamique et réactif.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite