IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

C# Obsługa zdarzeń (Jak to działa dla deweloperów)

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

W nowoczesnych aplikacjach .NET, programowanie zorientowane na zdarzenia odgrywa kluczową rolę w poprawie reaktywności i zapewnieniu płynnych doświadczeń użytkownika. Gdy zadania, takie jak generowanie PDF, zajmują czas, nie chcesz blokować głównego wątku. Zamiast tego możesz użyć obsług zdarzeń, aby uruchamiać zadania asynchronicznie i reagować, gdy wystąpi zdarzenie — czyniąc swoją aplikację bardziej interaktywną i reaktywną.

W tym przewodniku pokażemy, jak zintegrować metody obsługi zdarzeń w C# z IronPDF dla płynnych przepływów pracy PDF w środowiskach desktopowych i webowych. Czy używasz WinForms, WPF, czy dowolnej innej platformy opartej na języku C#, ten przewodnik Cię pokryje.

Konfigurowanie projektu IronPDF

Zanim zagłębimy się w obsługę zdarzeń, szybko skonfigurujmy IronPDF w twoim projekcie .NET.

Zainstaluj IronPDF przez NuGet

W konsoli Menedżera pakietów Visual Studio, uruchom:

PM > Install-Package IronPdf

To zainstaluje wszystko, co potrzebne do rozpoczęcia generowania PDF za pomocą IronPDF.

Podstawowe generowanie PDF w IronPDF

Oto szybki przykład, aby upewnić się, że IronPDF działa:

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

Gdy to działa, jesteś gotowy, aby dodać pola zdarzeń, podłączyć zarejestrowane delegaty i używać typów delegatów do tworzenia przepływów pracy zorientowanych na zdarzenia.

Podstawy obslugi zdarzen w C# dla deweloperow .NET

Podstawy programowania zorientowanego na zdarzenia

Dzięki programowaniu zorientowanemu na zdarzenia, twoja aplikacja reaguje, gdy wystąpi zdarzenie, np. zakończenie generowania PDF. C# używa delegatów jako typowych wskaźników funkcji, umożliwiając ci zdefiniowanie, jak powinna reagować twoja aplikacja.

Zazwyczaj deklarujesz zdarzenia używając słowa kluczowego event, łączysz je z metodami obsługi zdarzeń i przekazujesz dane za pomocą niestandardowych podklas EventArgs.

Declaruj zdarzenie przy użyciu słowa kluczowego event

C# używa słowa kluczowego event do deklarowania członków zdarzeń. Na przykład:

public event EventHandler PdfGenerated;

Ta linia deklaruje pole zdarzenia nazwane PdfGenerated. Używa EventHandler, wbudowanego delegata z następującymi parametrami: (object sender, EventArgs e) — często nazywanego wzorcem nazewniczym dla zdarzeń w .NET.

Definiowanie i subskrypcja zdarzen w C#

Dodawaj metody do zdarzeń przy użyciu delegatów

Zdarzenia w C# obsługują dodawanie metod dynamicznie w czasie wykonywania przy użyciu składni +=. Oto jak to zrobić:

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

Ta klasa subskrybenta nasłuchuje zdarzenia PdfGenerated i wykonuje wywołanie metody, gdy zdarzenie zostanie wyzwolone.

Dane zdarzenia niestandardowego

Aby przekazać dane zdarzeń, takie jak wygenerowana ścieżka pliku, zdefiniuj klasę pochodną od EventArgs:

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

Następnie zdefiniuj ponownie zdarzenie przy użyciu ogólnego typu delegata:

public event EventHandler<PdfGeneratedEventArgs> PdfGenerated;

To daje ci zorganizowane, typowane dane, gdy zdarzenie zostanie wyzwolone, czyniąc twoją logikę reakcji bardziej potężną.

Obsługa wielu zdarzeń

Możesz zdefiniować wiele zdarzeń:

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

Każde pole zdarzenia jest obsługiwane przez klasę subskrybenta, umożliwiając różne metody obsługi zdarzeń na każdym etapie. To rozdzielenie obowiązków ma sens w złożonych przepływach pracy.

Używanie obsług zdarzeń z IronPDF

Podczas generowania dużych PDF, ma sens uruchomienie IronPDF na wątku w tle i powiadamianie interfejsu użytkownika po zakończeniu. Oto, jak projektowanie zorientowane na zdarzenia może pomóc:

  • Używaj BackgroundWorker do asynchronicznego generowania PDF
  • Wywołuj zdarzenia, gdy każdy etap się zakończy
  • Przekaż dane rezultatów przy użyciu obiektów danych zdarzeń

Przykład kodu – Asynchroniczne generowanie PDF

Poniższy przykład to pełny kod do używania obsługi zdarzeń z 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}");
        }
    }
}

Wynik konsoli

Obsluga zdarzen w C# (Jak to dziala dla deweloperow): Rysunek 1 - Konsolowy wynik

Wynik w formacie PDF

Obsluga zdarzen w C# (Jak to dziala dla deweloperow): Rysunek 2 - Wynik w formacie PDF

Kluczowe cechy w tym kodzie

  • public event EventHandler<PdfGeneratedEventArgs>: Deklaruje zdarzenie z silnym typowaniem
  • PdfGeneratedEventArgs: Niestandardowa klasa dla danych zdarzenia
  • BackgroundWorker: Pozwala na asynchroniczne wykonanie, aby uniknac blokowania interfejsu uzytkownika
  • ?.Invoke(...): Bezpieczne wywolanie zdarzenia
  • Tuple<string, string>: Przekazuje HTML i sciezke wyjsciowa do watku w tle

Wskazówki dotyczące pracy ze zdarzeniami w .NET

1. Unikaj blokowania wątku UI

Używaj obsług zdarzeń takich jak RunWorkerCompleted, aby aktualizować interfejs użytkownika tylko po zakończeniu zadań w tle.

2. Obsłuż wyjątki z wdziękiem

Owiń swoją logikę pracy w bloki try-catch wewnątrz DoWork i przekaż wyjątki do RunWorkerCompleted za pośrednictwem e.Error.

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

3. Odsubskrybuj, gdy to konieczne

W długotrwałych aplikacjach, odsubskrybuj zdarzenia, gdy nie są już potrzebne, aby uniknąć wycieków pamięci:

pdfWorker.DoWork -= PdfWorker_DoWork;

Podsumowanie

Używanie obsług zdarzeń, typów delegatów i pól zdarzeń z IronPDF dodaje reaktywnego, nowoczesnego akcentu do aplikacji .NET. Czy generujesz dokumenty w klasie bazowej, tworzysz logikę do ponownego użycia w klasach pochodnych, czy po prostu eksplorujesz model zdarzeń .NET, ten wzorzec jest skalowalny i czysty.

Kiedy używać tego podejścia

  • Chcesz wywołać zdarzenie po zakończeniu zadania
  • Potrzebujesz czystego rozdzielenia między logiką a interfejsem użytkownika
  • Pracujesz z BackgroundWorker, zdarzeniami i delegatami
  • Wolisz mechanikę typowanych wskaźników funkcji C#

Alternatywy do eksploracji

  • async/await i Task.Run dla nowszych przeplywow pracy
  • IProgress<t> dla aktualizacji w czasie rzeczywistym podczas dlugotrwalych operacji, IronPDF w polaczeniu z wydarzeniami C# ulatwia tworzenie wydajnych, responsywnych aplikacji generujacych PDF-y, z mysla o realnej uzytecznosci. Gotowy, aby wdrożyć generowanie PDF zorientowane na zdarzenia w swojej aplikacji .NET? Wypróbuj to z bezpłatną wersją próbną IronPDF i zadowol swoich użytkowników płynnymi, nieblokującymi doświadczeniami!
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