IRONSOFTWAREHOME
GELIŞTIRICI GÜNCELLEMELERI

C# Olay İşleyici (Geliştiriciler İçin Nasıl Çalışır)

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Jacob Mellor
Updated: 21 Nisan 2026

Modern .NET uygulamalarda, olay odaklı programlama, yanıt verirliğin artırılmasında ve sorunsuz kullanıcı deneyimlerinin sağlanmasında önemli bir rol oynamaktadır. PDF oluşturma gibi görevler zaman aldığında, ana iş parçacığını engellemek istemezsiniz. Bunun yerine, görevleri asenkron olarak yürütmek ve bir olay meydana geldiğinde tepki vermek için olay işleyicileri kullanabilirsiniz. Bu, uygulamanızı daha etkileşimli ve duyarlı hale getirir.

Bu kılavuzda, masaüstü ve web ortamlarında sorunsuz PDF iş akışları için IronPDF ile C# olay işleme yöntemlerini nasıl entegre edeceğinizi göstereceğiz. İster WinForms, WPF kullanın, ister başka bir C# programlama dili tabanlı platform kullanıyor olun, bu kılavuz sizin için var.

IronPDF Projenizi Kurma

Olayları ele almadan önce, .NET projenizde IronPDF'i hızlı bir şekilde kurmamıza izin verin.

NuGet ile IronPDF Kurulumu

Visual Studio Paket Yönetici Konsolu'nda çalıştırın:

PM > Install-Package IronPdf

IronPDF kullanarak PDF oluşturmak için gereken her şeyi yükler.

IronPDF ile Temel PDF Oluşturma

IronPDF'ın çalıştığından emin olmak için hızlı bir örnek:

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

Bu çalıştığında, olay alanları ekleyebilir, kayıtlı delegeleri bağlayabilir ve olay odaklı iş akışları oluşturmak için delege türlerini kullanabilirsiniz.

.NET Geliştiricileri için C# Olay İşleyici Temelleri

Olay Odaklı Programlamanın Temelleri

Olay odaklı programlama ile uygulamanız bir olay meydana geldiğinde yanıt verir, örneğin bir PDF'nin oluşturulmasını tamamladığında. C#, tür güvenli işlev göstericileri olarak delegeleri kullanır ve uygulamanızın nasıl tepki vermesi gerektiğini tanımlamanıza olanak sağlar.

Genellikle olayları event anahtar kelimesi kullanarak ilan eder, olay işleme yöntemlerine bağlar ve özel EventArgs alt sınıflarını kullanarak veri iletirsiniz.

Event Anahtar Kelimesi ile Olay İlan Etme

C#, event üyelerini ilan etmek için event anahtar kelimesini kullanır. Örneğin:

public event EventHandler PdfGenerated;

Bu satır, PdfGenerated adında bir olay alanı ilan eder. Bu olay, olaylar için .NET'te adlandırma deseni olarak bilinen şu parametre listesine sahip yerleşik bir delege olan EventHandler kullanır: (object sender, EventArgs e).

C#'da Olayları Tanımlama ve Abone Olma

Delegeler Kullanarak Olaylara Metod Ekleme

C# olayları, çalışma saatinde dinamively yöntem eklemeyi += syntax aracılığıyla destekler. İşte nasıl yapılacağı:

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

Bu abone sınıfı, PdfGenerated olayını dinler ve tetiklendiğinde bir yöntem çağrısı yapar.

Özel Olay Verileri

Oluşturulan dosya yolu gibi olay verilerini iletmek için EventArgs sınıfından türetilmiş bir sınıf tanımlayın:

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

Daha sonra olayı, generic delege türü kullanarak yeniden tanımlayın:

public event EventHandler<PdfGeneratedEventArgs> PdfGenerated;

Bu size, olay tetiklendiğinde güçlü, tür güvenli veriler sağlar ve tepki mantığınızı daha güçlü kılar.

Birden Çok Olayı Ele Alma

Birden çok olay tanımlayabilirsiniz:

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

Her olay alanı, bir abone sınıfı tarafından ele alınır, böylece her aşama için farklı olay işleyici yöntemleri sağlayabilirsiniz. Bu, karmaşık iş akışlarında mantıklı bir ayrım sağlar.

IronPDF ile Olay İşleyicileri Kullanma

Büyük PDF'ler oluştururken, IronPDF'i bir arka plan iş parçacığında çalıştırmak ve tamamlandığında kullanıcı arayüzüne bildirmek mantıklıdır. İşte olay odaklı tasarımın nasıl yardımcı olabileceği:

  • PDF'leri asenkron olarak oluşturmak için bir BackgroundWorker kullanın
  • Her aşama tamamlandığında olayları tetikleyin
  • Sonuç verilerini olay verisi nesneleri aracılığıyla iletin

Kod Örneği – PDF'leri Asenkron Olarak Oluşturma

Aşağıdaki örnek, IronPDF ile olay işleme kullanımına dair tam kodu göstermektedir:

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

Konsol Çıkışı

C# Olay İşleyicisi (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - Konsol Çıkışı

PDF Çıktısı

C# Olay İşleyicisi (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - PDF çıktısı

Bu Koddaki Ana Özellikler

  • public event EventHandler<PdfGeneratedEventArgs>: Güçlü tipte bir olayı bildirir
  • PdfGeneratedEventArgs: Olay verisi için özel sınıf
  • BackgroundWorker: UI tıkanıklığını önlemek için async yürütmeye izin verir
  • ?.Invoke(...): Güvenli olay çağrısı
  • Tuple<string, string>: Arka plan iş parçacığına HTML ve çıktı yolunu iletir

.NET'te Olaylarla Çalışmak İçin İpuçları

1. UI Is Parcacığını Engellemeyin

Arka plan görevlerinin tamamlanmasının ardından yalnızca RunWorkerCompleted gibi olay işleyicilerini kullanarak UI güncellemeleri yapın.

2. İstisna Durumlarını Zarifçe Ele Alın

İş mantığınızı DoWork içine try-catch bloklarına sarın ve RunWorkerCompleted'e e.Error aracılığıyla istisnalar iletin.

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

3. Gerekli Olduğunda Abonelikten Çıkın

Uzun süren uygulamalarda, bellek sızıntılarını önlemek için artık ihtiyaç duymadığınız olaylardan abonelikten çıkın:

pdfWorker.DoWork -= PdfWorker_DoWork;

Son Düşünceler

Olay işleyicilerini, delege türlerini ve olay alanlarını IronPDF ile kullanmak, .NET uygulamalarına duyarlı, modern bir estetik katıyor. İster belgeleri bir temel sınıf içinde oluşturun, ister türetilmiş sınıflarda yeniden kullanılabilir mantıklar oluşturun ya da .NET'in olay modelini keşfedin, bu desen ölçeklenebilir ve temizdir.

Bu Yöntemi Ne Zaman Kullanmalı

  • Bir görevin tamamlanmasını olay yükselterek işaretlemek istiyorsanız
  • Mantık ve UI arasında temiz bir ayrım ihtiyacınız varsa
  • BackgroundWorker, olaylar ve delege ile çalışıyorsunuz
  • C#'ın tür güvenli işlem noktası mekaniklerini tercih ediyorsanız

Kefşetmek için Alternatifler

  • Yeni iş akışları için async/await ve Task.Run
  • Uzun işlemler sırasında gerçek zamanlı güncellemeler için IProgress<t>, IronPDF, C# olaylarıyla birleştirildiğinde güçlü ve duyarlı PDF oluşturan uygulamaları, gerçek dünya kullanımı düşünülerek basit hale getirir. .NET uygulamanızda olay odaklı PDF oluşturmayı uygulamaya hazır mısınız? Kullanıcılarınızı sorunsuz, kesintisiz deneyimlerle mutlu etmek için bir IronPDF ücretsiz denemesi ile deneyin!
Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ve NASA, Tesla ve dünya genelindeki devlet kurumlarına hizmet etmektedir.

...
Daha Fazla Oku

İlgili Makaleler

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Ücretsiz Canlı Demo rezervasyonu yapın
Booking Badge

Dünya Çapında Milyonlarca Mühendisin Güvendiği

Iron Software müşteri logoları
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez