.NET-HILFE

C#-Ereignisse (Wie es für Entwickler funktioniert)

Veröffentlicht 14. Januar 2025
Teilen Sie:

Ereignisse in C#sind ein grundlegender Bestandteil der ereignisgesteuerten Programmierung. Sie ermöglichen es Objekten, zu kommunizieren und andere zu benachrichtigen, wenn etwas Interessantes passiert. In diesem Leitfaden werden wir Ereignisse erkunden und erläutern, wie man sie deklariert und verwendet. Lassen Sie uns das Schritt für Schritt aufschlüsseln, um ein klares Verständnis zu gewährleisten. Wir werden auch Folgendes erforschenIronPDFfür PDF-Operationen in C#-Anwendungen.

Was sind Ereignisse in C#?

Ereignisse in C# ermöglichen die Kommunikation zwischen Objekten. Wenn ein Ereignis ausgelöst wird, können andere Objekte darauf reagieren. Ereignisse basieren auf Delegaten, die als typsichere Zeiger auf Methoden agieren. Ein Ereignis-Delegat-Typ definiert die Signatur von Methoden, die das öffentliche Ereignis behandeln können, und gewährleistet so Konsistenz bei der Verarbeitung von Ereignisdaten.

Kernkomponenten von Events

Um Ereignisse vollständig zu verstehen, lassen Sie uns ihre Hauptkomponenten betrachten:

1. Publisher-Klasse

Die Publisher-Klasse ist die Quelle des Ereignisses. Es ist verantwortlich für die Deklaration des Ereignisses und das Auslösen desselben, wenn eine bestimmte Aktion oder Bedingung eintritt. Dieser Prozess umfasst typischerweise eine Ereignishandler-Methode, um zu bestimmen, wann das Ereignis eintritt. Der Publisher verwendet auch einen Ereignis-Delegaten, um die Signatur der Methoden zu definieren, die das Ereignis bearbeiten können. Zum Beispiel in einer grafischen Benutzeroberfläche(GUI), steuert eine Schaltfläche die Ereignisauslösung als Publisher, wenn sie ein "Click"-Ereignis auslöst.

2. Abonnentenklasse

Die Abonnentenklasse hört Ereignisse ab und reagiert darauf. Ein Abonnent registriert sein Interesse an einem Ereignis, indem er eine Ereignisverarbeitungsmethode an das Ereignis anfügt. Wenn der Publisher das Ereignis auslöst, wird die Ereignis-Handler-Methode des Abonnenten ausgeführt. Ein einzelnes Ereignis kann mehrere Abonnenten haben, die jeweils unterschiedlich reagieren, wenn das Ereignis eintritt.

3. Delegierte

Delegates sind die Grundlage von Ereignissen in C#. Sie sind typsichere Zeiger auf Methoden und definieren den Vertrag, dem alle Ereignishandler folgen müssen. Delegates stellen sicher, dass nur Methoden mit einer bestimmten Signatur das Ereignis behandeln können, wodurch ein konsistenter und fehlerfreier Ereignisbehandlungsmechanismus gewährleistet wird.

4. Ereignis-Handler

Ereignishandler sind Methoden in der Abonnementklasse, die ausgeführt werden, wenn ein Ereignis ausgelöst wird. Sie enthalten die Logik zur Behandlung des Ereignisses, wie das Aktualisieren der Benutzeroberfläche, das Protokollieren von Daten oder das Durchführen von Berechnungen. Die Signatur eines Ereignishandlers muss dem Delegattyp entsprechen, der mit dem Ereignis verknüpft ist. Darüber hinaus können andere Klassen Ereignishandler verwenden, um auf gemeinsame Ereignisse zu reagieren. Es vereinfacht die Implementierung von Ereignissen auf modulare und wiederverwendbare Weise.

5. Ereignisdaten

In vielen Fällen müssen Ereignisse den Abonnenten zusätzliche Informationen übermitteln. Dies wird durch die Verwendung von Ereignisdatenklassen erreicht, die von der Basisklasse EventArgs abgeleitet sind. Die Veranstaltungsdaten enthalten spezifische Details über das Ereignis, wie z. B. eine Nachricht, den Status oder andere relevante Informationen.

So deklarieren und verwenden Sie Ereignisse in C

Schritt 1: Einen Delegaten deklarieren

Delegaten definieren die Methodensignatur für Ereignishandler. In diesem Beispiel erstellen wir einen Delegaten, um den Ereignishandler mit zwei Parametern zu repräsentieren: object sender und 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)
VB   C#

Schritt 2: Ein Ereignis deklarieren

Ereignisse werden mit dem Schlüsselwort event deklariert und basieren auf dem Delegattyp. Hier ist ein Beispiel:

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
VB   C#

Schritt 3: Ereignis auslösen

Das Ereignis wird ausgelöst, indem der Delegat aufgerufen und die erforderlichen Parameter übergeben werden.

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
VB   C#

Schritt 4: Abonnieren Sie das Ereignis

Abonnenten registrieren Ereignishandler mithilfe des += Operators:

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.
VB   C#

Schritt 5: Ereignis behandeln

Ein Ereignishandler ist eine Methode in der Abonnement-Klasse, die mit der Signatur des Delegaten übereinstimmt:

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
VB   C#

IronPDF: C# PDF-Bibliothek

IronPDF, eine vielseitige Bibliothek zur Arbeit mit PDFs in .NET, integriert sich nahtlos in C#-Anwendungen. Kombiniert mit Ereignissen in C# kann es eine dynamische Methode zur Handhabung von Echtzeitszenarien wie Fortschrittsaktualisierungen, Fehlerbehandlung oder Benachrichtigungen bieten.PDF-Erzeugungoder Manipulation. Lassen Sie uns diese Beziehung auf interessante Weise erkunden. In C# sind Events eine Möglichkeit, zu signalisieren, dass etwas passiert ist. Sie ermöglichen es einem Teil Ihres Programms, andere Teile über bestimmte Ereignisse zu benachrichtigen, wie zum Beispiel das Verarbeiten einer Datei, das Abschließen einer Aufgabe oder das Auftreten eines Fehlers.

Wie passt IronPDF?

IronPDF ermöglicht es Ihnen, PDFs zu erstellen, zu ändern und zu sichern. Durch die Integration mit Ereignissen kann Ihre Anwendung interaktiver gestaltet werden. Zum Beispiel:

  • Fortschrittsverfolgung: Benachrichtigen Sie Abonnenten über den Abschlussprozentsatz beim Erstellen eines großen PDF-Berichts.
  • Fehlerbehandlung: Lösen Sie ein Ereignis aus, wenn während der PDF-Erstellung oder -Speicherung ein Problem auftritt.
  • Benutzerdefinierte Aktionen: Führen Sie benutzerdefinierte Logik aus, wie beispielsweise Protokollierung oder Benutzeroberflächenaktualisierungen, nach bestimmten PDF-Operationen.

Beispiel: Generieren eines PDFs mit Ereignisbenachrichtigungen

Hier ist ein einfaches Beispiel, um die Verwendung von IronPDF mit Ereignissen zu demonstrieren:

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
    public static void Main()
    {
        License.LicenseKey = "License-Key";
        // Subscribe to the ProgressUpdated event
        ProgressUpdated += DisplayProgress;
        Console.WriteLine("Generating PDF...");
        GeneratePdf();
    }
    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}");
        }
    }
    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
    public static void Main()
    {
        License.LicenseKey = "License-Key";
        // Subscribe to the ProgressUpdated event
        ProgressUpdated += DisplayProgress;
        Console.WriteLine("Generating PDF...");
        GeneratePdf();
    }
    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}");
        }
    }
    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 static void Main
	Public Shared Sub Main()
		License.LicenseKey = "License-Key"
		' Subscribe to the ProgressUpdated event
		AddHandler Me.ProgressUpdated, AddressOf DisplayProgress
		Console.WriteLine("Generating PDF...")
		GeneratePdf()
	End Sub
	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
	Private Shared Sub DisplayProgress(ByVal progress As Integer)
		Console.WriteLine($"Progress: {progress}%")
	End Sub
End Class
VB   C#

C#-Ereignisse (Wie es für Entwickler funktioniert): Abbildung 1 - Ausgabe

Schlussfolgerung

C#-Ereignisse (Wie es für Entwickler funktioniert): Abbildung 2 - Lizenzierung

Ereignisse in C# kombiniert mit IronPDF schaffen ein leistungsstarkes System für die dynamische PDF-Erstellung und -Verwaltung. Ereignisse bieten eine saubere, effiziente Methode zur asynchronen Handhabung von PDF-Operationen, während IronPDF robuste Funktionen für die Erstellung, Bearbeitung und Manipulation von PDFs über .NET-Plattformen hinweg bietet. IronPDF bietet einekostenloser Testum alle Funktionen ohne Einschränkungen zu testen. Kommerzielle Lizenzen beginnen bei 749 $ und bieten Zugang zur vollständigen Suite von Funktionen zur PDF-Erstellung und -Verarbeitung.

< PREVIOUS
C# Enumerable (Wie es für Entwickler funktioniert)
NÄCHSTES >
C# Async Await (Wie es für Entwickler funktioniert)