IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

C# Zdarzenia (Jak to działa dla deweloperów)

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Jacob Mellor
Updated: 23 kwietnia 2026

Zdarzenia w C# są fundamentalną częścią programowania zdarzeniowego. Pozwalają one obiektom komunikować się i powiadamiać innych, gdy dzieje się coś interesującego. W tym przewodniku zbadamy zdarzenia oraz sposób ich deklarowania i używania. Rozłóżmy to na etapy, aby zapewnić jasne zrozumienie. Przyjrzymy się również IronPDF dla operacji PDF w aplikacjach C#.

Czym są zdarzenia w C#?

Zdarzenia w C# umożliwiają komunikację między obiektami. Gdy zdarzenie jest wywoływane, inne obiekty mogą na nie reagować. Zdarzenia opierają się na delegatach, którzy działają jako bezpieczne typy wskaźników do metod. Typ delegata zdarzenia definiuje sygnaturę metod, które mogą obsługiwać publiczne zdarzenie, zapewniając spójność w obsłudze danych zdarzenia.

Podstawowe komponenty zdarzeń

Aby w pełni zrozumieć zdarzenia, przyjrzyjmy się ich głównym komponentom:

1. Klasa Wydawcy

Klasa wydawcy jest źródłem zdarzenia. Jest odpowiedzialna za deklarowanie zdarzenia i wywoływanie go, gdy wystąpi konkretne działanie lub warunek. Proces ten zazwyczaj obejmuje metodę obsługi zdarzeń w celu określenia, kiedy zdarzenie występuje. Wydawca używa również delegata zdarzenia do określenia sygnatury metod, które mogą obsługiwać zdarzenie. Na przykład, w interfejsie graficznym (GUI) kontrolka przycisku działa jako wydawca, gdy generuje zdarzenie "Click".

2. Klasa Subskrybenta

Klasa subskrybenta nasłuchuje zdarzeń i reaguje na nie. Subskrybent rejestruje swoje zainteresowanie zdarzeniem, dołączając metodę obsługi zdarzenia do zdarzenia. Gdy wydawca wywołuje zdarzenie, metoda obsługi zdarzeń subskrybenta jest wykonywana. Jedno zdarzenie może mieć wielu subskrybentów, z których każdy reaguje inaczej, gdy zdarzenie wystąpi.

3. Delegaty

Delegaty są fundamentem dla zdarzeń w C#. Stanowią bezpieczne typy wskaźników do metod i definiują kontrakt, który muszą przestrzegać wszyscy obsługujący zdarzenia. Delegaty zapewniają, że tylko metody o określonej sygnaturze mogą obsługiwać zdarzenie, zapewniając spójny i bezbłędny system obsługi zdarzeń.

4. Obsługujące Zdarzenia

Obsługujące zdarzenia to metody w klasie subskrybenta, które są wykonywane, gdy zdarzenie jest wywoływane. Zawierają one logikę obsługi zdarzeń, takich jak aktualizacja interfejsu użytkownika, logowanie danych lub wykonywanie obliczeń. Sygnatura obsługującej zdarzenie musi odpowiadać typowi delegata związanym z tym zdarzeniem. Dodatkowo, inne klasy mogą używać obsługujących zdarzeń do reagowania na wspólne zdarzenia. Ułatwia to implementację zdarzeń w sposób modułowy i reużywalny.

5. Dane Zdarzeń

W wielu przypadkach zdarzenia muszą przekazywać dodatkowe informacje subskrybentom. Osiąga się to poprzez klasy danych zdarzeń, które są pochodnymi z bazowej klasy EventArgs. Dane zdarzeń zawierają szczegółowe informacje o zdarzeniu, takie jak wiadomość, status lub inne istotne informacje.

How to Declare and Use Events in C#

Krok 1: Deklaracja Delegata

Delegaty definiują sygnaturę metod dla obsługujących zdarzenia. W tym przykładzie tworzymy delegata do reprezentowania programu obsługi zdarzeń z dwoma parametrami: object sender i EventArgs e.

public delegate void MyEventHandler(object sender, EventArgs e);

Krok 2: Deklaracja Zdarzenia

Zdarzenia są deklarowane przy użyciu słowa kluczowego event i bazują na typie delegata. Oto przykład:

public class Publisher
{
    public event MyEventHandler Notify; // Declare the event.
}

Krok 3: Wywołanie Zdarzenia

Zdarzenie wywoływane jest poprzez wywołanie delegata i przekazanie niezbędnych parametrów.

public void TriggerEvent()
{
    if (Notify != null) // Check if there are subscribers.
    {
        Notify(this, EventArgs.Empty); // Raise the event.
    }
}

Krok 4: Subskrybowanie Zdarzenia

Subskrybenci rejestrują programy obsługi zdarzeń przy użyciu operatora +=:

Publisher publisher = new Publisher();
Subscriber subscriber = new Subscriber();
publisher.Notify += subscriber.OnNotify; // Subscribe to the event.

Krok 5: Obsługa Zdarzenia

Obsługująca zdarzenie jest metodą w klasie subskrybenta, która odpowiada sygnaturze delegata:

public void OnNotify(object sender, EventArgs e)
{
    Console.WriteLine("Event received!");
}

IronPDF: biblioteka PDF dla języka C#

IronPDF, wszechstronna biblioteka do pracy z PDF w .NET, bezproblemowo integruje się z aplikacjami C#. W połączeniu z zdarzeniami w C# może oferować dynamiczny sposób obsługi scenariuszy w czasie rzeczywistym, takich jak aktualizacje postępu, obsługa błędów czy powiadomienia podczas generowania lub manipulacji PDF. Przyjrzyjmy się temu związkowi w angażujący sposób. W C#, zdarzenia są sposobem na sygnalizowanie, że coś się wydarzyło. Pozwalają jednej części programu powiadamiać inne części o określonych zdarzeniach, takich jak przetwarzanie pliku, ukończenie zadania czy napotkanie błędu.

Jak pasuje IronPDF?

IronPDF pozwala generować, modyfikować i zabezpieczać PDF-y, a integracja z nowoczesnymi zdarzeniami może uczynić aplikację bardziej interaktywną. Na przykład:

  • Śledzenie postępu: Powiadamiaj subskrybentów o procentowym ukończeniu, gdy generujesz duży raport PDF.
  • Obsługa błędów: Wywołaj zdarzenie, gdy pojawi się problem podczas renderowania lub zapisu PDF.
  • Akcje niestandardowe: Wykonuj niestandardową logikę, taką jak logowanie czy aktualizacje interfejsu użytkownika po określonych operacjach PDF.

Przykład: Generowanie PDF ze Zdarzeniami

Oto prosty przykład demonstrujący użytkowanie IronPDF ze zdarzeniami:

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}%");
    }
}

Zdarzenia w C# (Jak to działa dla deweloperów): Rysunek 1 - Wyjście

Wnioski

Zdarzenia w C# (Jak to działa dla deweloperów): Rysunek 2 - Licencjonowanie

Zdarzenia w C# w połączeniu z IronPDF tworzą potężny system do dynamicznego generowania i zarządzania PDF. Zdarzenia zapewniają czysty, wydajny sposób obsługi operacji PDF asynchronicznie, podczas gdy IronPDF oferuje solidne funkcje do tworzenia, edycji i manipulacji PDF na platformach .NET. IronPDF oferuje bezpłatną wersję próbną, aby przetestować wszystkie funkcje bez ograniczeń. Licencje komercyjne zaczynają się od $999 i zapewniają dostęp do pełnego zestawu możliwości generowania i przetwarzania PDF.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta