Altbilgi içeriğine atla
.NET YARDıM

C# Etkinlikler (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 void MyEventHandler(object sender, EventArgs e);
Public Delegate Sub MyEventHandler(ByVal sender As Object, ByVal e As EventArgs)
$vbLabelText   $csharpLabel

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 MyEventHandler Notify; // Declare the event.
}
Public Class Publisher
	Public Event Notify As MyEventHandler ' Declare the event.
End Class
$vbLabelText   $csharpLabel

Adı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 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
$vbLabelText   $csharpLabel

Adı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.
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.
$vbLabelText   $csharpLabel

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 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
$vbLabelText   $csharpLabel

IronPDF: 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}%");
    }
}
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
Friend 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 Me.ProgressUpdated, AddressOf DisplayProgress

		Console.WriteLine("Generating PDF...")
		GeneratePdf() ' Generate the PDF
	End Sub

	' Method to generate PDF and trigger progress updates
	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

	' Event handler to display progress
	Private Shared Sub DisplayProgress(ByVal progress As Integer)
		Console.WriteLine($"Progress: {progress}%")
	End Sub
End Class
$vbLabelText   $csharpLabel

C# Olaylar (Geliştiriciler için Nasıl Çalışır): Şekil 1 - Çıktı

Sonuç

C# Olaylar (Geliştiriciler için Nasıl Çalışır): Şekil 2 - Lisanslama

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.

Sıkça Sorulan Sorular

Uygulamamda C# olaylarını nasıl uygulayabilirim?

C# olaylarını uygulamak için, olay işleyicisinin imzasını belirten bir delege tanımlamanız, bu delegeyi kullanarak olayı bildirmeniz, uygun zamanda olayı tetiklemeniz ve olay imzasıyla eşleşen bir yöntemle olaya abone olmanız gerekir.

C# olaylarının temel bileşenleri nelerdir?

C# olaylarının temel bileşenleri, olayı bildiren ve tetikleyen yayıncı; olayı dinleyen abone; yöntemlere tür güvenli işaretçi olarak hizmet eden delegeler; olay tetiklendiğinde çalıştırılan olay işleyiciler; ve olaya dair bilgileri abonelere ileten olay verilerini içerir.

Bir PDF kütüphanesi, C# olay işlemesini nasıl geliştirebilir?

IronPDF gibi bir PDF kütüphanesi, PDF işleme görevlerine olay yönlendirmeli bildirimlerin entegrasyonunu sağlayarak C# olay işlemesini geliştirebilir. Bu, gerçek zamanlı ilerleme güncellemelerini, hata bildirimlerini ve belirli PDF işlemleri sonrası özel mantıkların yürütülmesini içerebilir.

Delegeler C#'ta olay işlemeyi nasıl destekler?

C#'ta delegeler, olay işleyicilerinin hangi yöntem imzasını izlemek zorunda olduğunu tanımlayarak olay işlemeyi destekler. Doğru imzaya sahip olmayan yöntemlerin olayı işlemek için kullanılmasına izin vermeyerek tür güvenliği ve tutarlılığı sağlarlar.

Olay işleyiciler, C# olaylarında hangi rolü oynar?

Olay işleyiciler, bir olayın tetiklenmesine yanıt olarak yürütülen yöntemlerdir. Olayı işlemek için gerekli mantığı içerirler ve olayla ilişkili delege tarafından tanımlanan imzaya uygun olmalıdırlar.

C# olayları dinamik PDF oluşturma için nasıl kullanılabilir?

C# olayları, süreç içine olay yönlendirmeli bildirimler entegre edilerek dinamik PDF oluşturma için kullanılabilir. Bu, bir kütüphane olan IronPDF kullanarak PDF oluşturma sırasında ilerlemeyi takip etmenizi, hataları işlemenizi ve özel eylemler gerçekleştirmenizi sağlar.

C#'ta bir olayı tetiklemek için atılması gereken adımlar nelerdir?

C#'ta bir olayı tetiklemek için öncelikle bir delege kullanarak olayı bildirmeniz gerekir. Ardından, yayıncı sınıf içinde, belirli bir koşul sağlandığında olayı çağırarak olayı tetiklersiniz. Olay işleyicileri eklemiş olan aboneler, yanıt olarak kendi yöntemlerini çalıştıracaklardır.

C# olayları, .NET uygulamalarında PDF işlemlerini nasıl geliştirir?

C# olayları, .NET uygulamalarında PDF işlemlerinin asenkron işlenmesini sağlayarak PDF işlemlerini geliştirir. Bu, gerçek zamanlı güncellemeleri, hata tespitini ve özel mantıkların tetiklenmesini sağlar, PDF yönetim sürecini daha dinamik ve tepki verici hale getirir.

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 ...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara