
C# Eventları (Geliştiriciler İçin Nasıl Çalışır)
C#'taki Olaylar olay odaklı programlamanın temel bir parçasıdır. Nesnelerin iletişim kurmasına ve bir ilginç olay meydana geldiğinde başkalarını bilgilendirmesine izin verir. Bu kılavuzda, olayları ve onları ilan etmek ve kullanmak hakkında keşif yapacağız. Temiz bir anlayışı garanti etmek için adım adım ayrıştıralım. IronPDF'yı ve C# uygulamalarında PDF işlemlerini de keşfedeceğiz.
C#'ta Etkinlikler Nelerdir?
C#'taki olaylar, nesneler arasında iletişimi sağlar. Bir olay tetiklendiğinde, diğer nesneler buna yanıt verebilir. Olaylar, işlevlere tür güvenli işaretçiler olarak hareket eden delegelere dayanır. Bir olay delege türü, kamuya açık olayları ele alabilecek yöntemlerin imzasını tanımlar ve olay verisi işlemenin tutarlılığını sağlar.
Olayların Temel Bileşenleri
Olayları tam olarak anlamak için, ana bileşenlerine bir göz atalım:
1. Yayımcı Sınıf
Yayımcı sınıf olayın kaynağıdır. Özel bir eylem veya durum gerçekleştiğinde olayı ilan etmek ve kaldırtmakla sorumludur. Bu süreç tipik olarak olayın ne zaman meydana geldiğini belirlemek için bir olay işleyici yöntemini içerir. Yayımcı ayrıca, olayın ele alınabileceği yöntemlerin imzasını tanımlamak için bir olay delege kullanır. Örneğin, grafik kullanıcı arayüzünde (GUI), bir düğme kontrolü bir 'Click' (Tıklama) olayını kaldırdığında yayımcı gibi davranır.
2. Abone Sınıfı
Abone sınıfı olayları dinler ve onlara tepki verir. Bir abone, bir olay işleme yöntemini olaya ekleyerek bir olaya ilgisini kaydeder. Yayımlayıcı olayı tetiklediğinde, abonelerin olay işleyici yöntemi çalışır. Tek bir olay, olay meydana geldiğinde her biri farklı tepki veren birden fazla aboneye sahip olabilir.
3. Delegeler
Delegeler, C#'taki olayların temelini oluşturur. Onlar, yöntemlere tür güvenli işaretçiler olup, tüm olay işleyicilerinin takip etmesi gereken sözleşmeyi tanımlarlar. Delege, belirli bir imzaya sahip sadece metodların olayı ele alabilmesini sağlayarak tutarlı ve hatasız bir olay işleme mekanizması sunar.
4. Olay İşleyicileri
Olay işleyicileri, bir olay tetiklendiğinde çalışan abone sınıfındaki yöntemlerdir. UI'yi güncellemek, verileri kaydetmek veya hesaplamalar yapmak gibi etkinliği ele alacak mantığı içerirler. Bir olay işleyicisinin imzası, olayla ilişkilendirilen delege türüyle eşleşmelidir. Ayrıca, diğer sınıflar da paylaşılan olaylara tepki vermek için olay işleyicilerini kullanabilir. Etkinlikleri modüler ve yeniden kullanılabilir bir şekilde uygulamayı kolaylaştırır.
5. Etkinlik Verileri
Pek çok durumda, olaylar abone olanlara ek bilgi iletmelidir. Bu, temel EventArgs sınıfından türetilen olay veri sınıfları kullanılarak gerçekleştirilir. Olay verileri, mesaj, durum veya diğer ilgili bilgiler gibi olay hakkında belirli ayrıntılar içerir.
How to Declare and Use Events in C#
Adım 1: Bir Delege Bildirin
Temsilciler, olay işleyicileri için yöntem imzasını tanımlar. Bu örnekte, iki parametre ile olayı temsil etmek için bir delege oluşturuyoruz: object sender ve EventArgs e.
public delegate void MyEventHandler(object sender, EventArgs e);Public Delegate Sub MyEventHandler(ByVal sender As Object, ByVal e As EventArgs)Adım 2: Bir Olay Bildirin
Olaylar event anahtar kelimesi kullanılarak bildirilir ve delege türüne dayanır. İşte bir örnek:
public class Publisher
{
public event MyEventHandler Notify; // Declare the event.
}Public Class Publisher
Public Event Notify As MyEventHandler ' Declare the event.
End ClassAdım 3: Olayı Başlat
Etkinlik, delegasyon çağrılarak ve gerekli parametreler geçirilerek tetiklenir.
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 SubAdım 4: Etkinliğe Abone Olun
Aboneler, olay işleyicilerini += operatörü kullanarak kaydeder:
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.Adım 5: Olayı Yönetin
Bir olay işleyici, abone sınıfında temsilci imzasına uyan bir yöntemdir:
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 SubIronPDF: C# PDF Kütüphanesi
IronPDF, PDF'lerle çalışmak için .NET ortamında kullanılan çok yönlü bir kütüphanedir ve C# uygulamalarıyla sorunsuz bir şekilde bütünleşir. C#'taki etkinlikler ile birleştirildiğinde, PDF oluşturma veya düzenleme sırasında ilerleme güncellemeleri, hata yönetimi ya da bildirimler gibi gerçek zamanlı senaryoları dinamik bir şekilde ele almanın bir yolunu sağlayabilir. Bu ilişkiyi ilgi çekici bir şekilde keşfedelim. C#'ta, olaylar bir şeyin olduğunu sinyal vermenin bir yoludur. Programınızın bir bölümünün, dosya işlenmesi, bir görevin tamamlanması veya bir hata ile karşılaşılması gibi belirli olaylar hakkında diğer bölümleri bilgilendirmesine olanak tanır.
IronPDF Nasıl Uyum Sağlar?
IronPDF, PDF'leri oluşturmanıza, değiştirmenize ve güvenli hale getirmenize olanak sağlar ve olaylarla entegre edilmesi, uygulamanızı daha etkileşimli hale getirebilir. Örneğin:
İlerleme Takibi: Büyük bir PDF raporu oluşturulurken tamamlanma yüzdesi hakkında abonelere bildirimde bulunun. Hata Yönetimi: PDF renderleme veya kaydetme sırasında bir sorun oluşursa bir olay tetikleyin. Özel İşlemler: Belirli PDF işlemlerinden sonra günlük kaydı veya kullanıcı arayüzü güncellemeleri gibi özel mantıkları yürütün.
Örnek: Etkinlik Bildirimleri ile PDF Oluşturma
İşte, etkinliklerle IronPDF kullanmayı göstermek için basit bir örnek:
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
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 ProgressUpdated, AddressOf DisplayProgress
Console.WriteLine("Generating PDF...")
GeneratePdf() ' Generate the PDF
End Sub
' Method to generate PDF and trigger progress updates
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) ' Trigger event with progress value
Next
' Generate a PDF
Dim PdfDocument = Renderer.RenderHtmlAsPdf("<h1>Hello, IronPDF with Events!</h1>")
PdfDocument.SaveAs("IronPDF/example.pdf")
RaiseEvent ProgressUpdated(100) ' Final update
Console.WriteLine("PDF generated successfully!")
Catch ex As Exception
Console.WriteLine($"Error: {ex.Message}")
End Try
End Sub
' Event handler to display progress
Shared Sub DisplayProgress(progress As Integer)
Console.WriteLine($"Progress: {progress}%")
End Sub
End Class
Sonuç
C#'taki olaylar, IronPDF ile birleştirildiğinde dinamik PDF oluşturma ve yönetimi için güçlü bir sistem oluşturur. Olaylar, PDF işlemlerini eşzamansız olarak yönetmek için temiz ve etkili bir yol sunarken, IronPDF, .NET platformlarında PDF oluşturma, düzenleme ve manipülasyonu için güçlü işlevsellik sunar. IronPDF, sınırlamalar olmadan tüm özellikleri test etmek için ücretsiz deneme sunar. Ticari lisanslar $999 seviyesinde başlar ve tam PDF üretim ve işleme yeteneklerine erişim sağlar.

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.
İlgili Makaleler


