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

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

Modern yazılım geliştirmede, uzun süren görevleri verimli bir şekilde yönetmek kritik öneme sahiptir; özellikle de büyük veya karmaşık PDF dosyalarının oluşturulmasının yaygın olduğu uygulamalarda. C# geliştiricileri genellikle sorunsuz PDF oluşturma için IronPDF'ye güvenir, ancak potansiyel olarak uzun süren PDF oluşturma görevlerini yönetmek, kullanıcı kesintilerini veya iptallerini yönetebilmek için bir yol gerektirir.

Bu noktada, C# dilinde CancellationToken devreye girer. IronPDF ile birleştirerek, PDF oluşturma görevlerinizin hem duyarlı hem de verimli olmasını sağlayabilirsiniz. Bu makalede, CancellationToken önemini, IronPDF ile neden iyi bir uyum içinde olduğunu ve görevleri zarif bir şekilde iptal etmek için nasıl uygulayabileceğinizi araştıracağız.

CancellationToken nedir?

CancellationToken, C# dilinde eş zamanlı programlamanın temel bir parçasıdır. Bir görevin iptal edilmesi gerektiğini belirtmenize izin vererek, geliştiricilere uzun süreli işlemler üzerinde daha fazla kontrol sağlar. Bu, raporlar veya faturalar gibi işlemleri yürütürken, amacınıza ulaştığınızda operasyonun iptal edilmesi gerektiğini belirten C# iptal simgelerini kullanarak sürekli veri raporları oluşturmaya devam etmek istediğinizde özellikle yararlı olabilir. Böylece programı zarif bir şekilde sonlandırır.

Nasıl çalışır?

Özünde, bir CancellationToken bir göreve veya yönteme iletilir ve iptal isteğinin olup olmadığını belirli aralıklarla kontrol eder. Eğer öyleyse, görev zarifçe sonlanabilir, kaynakları serbest bırakır ve uygulamanızın duyarlılığını artırır. Bu, özellikle karmaşık belgelerin oluşturulmasının zaman alabileceği PDF oluşturma gibi durumlarda kullanışlıdır.

CancellationTokens kullanarak, gereksiz yere uzun süren görevlerin potansiyel dezavantajlarından, sistem kaynaklarının israfı veya zayıf bir kullanıcı deneyiminden kaçınabilirsiniz.

Dahili İptal Tokenleri

C# dilinde, dahili bir iptal simgesi, belirli bir sınıf veya yöntem içinde oluşturulan ve yönetilen, dış bir kaynaktan gelmek yerine oluşturulan ve yönetilen bir iptal simgesini ifade eder. Bu, tek bir bileşenin kapsamı içinde görev iptali üzerinde daha ince bir kontrol sağlar, içsel olarak başlayan iptal isteklerini izleme ve yanıt vermeyi mümkün kılar.

Dahili bir iptal simgesi kullanmak, iptal mantığını sınıfınızın tüketicilerine açığa çıkarmadan kapsüllendirmek istediğiniz senaryolarda özellikle kullanışlıdır, bu sayede temiz bir arayüz korur. Bu yaklaşım, kodun modülerliğini artırabilir ve daha geniş CancellationToken çerçevesinin sağladığı esnekliği hala kullanarak, karmaşık eş zamanlı iş akışlarını yönetmeyi kolaylaştırabilir.

IronPDF ile İptal Tokeri Kullanmanın Nedenleri

PDF'ler oluştururken, özellikle web uygulamalarında veya karmaşık raporlama sistemlerinde, kullanıcıların büyük bir PDF dosyası oluşturmak gibi bir görev başlattığı, ancak ardından uzaklaştığı veya artık sonucu istemediği durumlarla karşılaşabilirsiniz. Bu durumlarda, gereksiz sunucu veya UI yükünden kaçınmak için PDF oluşturma sürecini iptal etme seçeneğini istersiniz.

İşte IronPDF ile CancellationToken kullanmanın neden önemli olduğunun sebepleri:

1. Gereksiz Yükü Önlemek

Bir kullanıcı, istekte bulunduğu PDF'yi artık istemiyorsa, işlemin devam etmesi için bir neden yoktur. CancellationToken kullanarak PDF oluşturma görevini durdurabilir, sunucularınız üzerindeki fazla yükü önleyebilir ve genel uygulama performansını artırabilirsiniz.

2. Kullanıcı Deneyimini Geliştirmek

Masaüstü uygulamalarında, PDF oluşturma UI iş parçacığında gerçekleşebilir ve uzun süren görev durumunda kullanıcı arayüzünü kilitleyebilir. CancellationToken ekleyerek, kullanıcılar görevi iptal edip uygulamayı duyarlı tutabilir.

3. Ölçeklenebilirliği Artırmak

Çok sayıda kullanıcının aynı anda PDF oluşturduğu web uygulamalarında ölçeklenebilirlik çok önemlidir. CancellationToken, gereksiz görevleri güvenle iptal etmenizi sağlar, kaynakları diğer istekleri verimli bir şekilde ele almak için serbest bırakır.

IronPDF ile CancellationToken Nasıl Uygulanır

CancellationToken kullanmanın neden yararlı olduğunu anladığımıza göre, şimdi bunu IronPDF ile nasıl uygulayacağımızı inceleyelim.

Step 1: Projenizde IronPDF'yi Kurma

IronPDF kullanmaya başlamak için, önce onu yüklemeniz gerekecek. Zaten yüklenmişse, bir sonraki bölüme geçebilirsiniz; aksi takdirde, aşağıdaki adımlar IronPDF kütüphanesinin nasıl yükleneceğini kapsar.

NuGet Package Manager Konsolu Üzerinden

NuGet Paket Yöneticisi Konsolu'nu kullanarak IronPDF'yi yüklemek için, Visual Studio'yu açın ve Paket Yöneticisi Konsolu'na gidin. Ardından aşağıdaki komutu çalıştırın:

Install-Package IronPdf

NuGet Package Manager for Solution aracılığıyla

Visual Studio'yu açarak, "Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution" yolundan IronPDF'yi arayın. Buradan, tek yapmanız gereken projenizi seçip "Install"a tıklamanız ve IronPDF projenize eklenecektir.

IronPDF'yi yükledikten sonra hemen kullanmaya başlamak için tek yapmanız gereken kodun başına doğru using ifadesini eklemektir:

using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Step 2: Asynchronous PDF Generation Methodda Cancellation Tokens Kullanma

Gelin gerçek bir uygulamayı keşfedelim. Bu örnekte, basit bir PDF'i HTML'den IronPDF kullanarak oluşturacağız, ancak CancellationToken ile gerektiğinde görevin iptal edilmesine olanak tanıyacağız.

using IronPdf;
using System;
using System.Threading;
using System.Threading.Tasks;

public class PdfGenerator
{
    public async Task GeneratePdfWithCancellation(CancellationToken token)
    {
        var Renderer = new ChromePdfRenderer();
        try
        {
            // Check for cancellation before starting
            token.ThrowIfCancellationRequested();

            // Simulating a long task that can be checked for cancellation periodically
            for (int i = 0; i < 10; i++)
            {
                // Simulating a piece of work (this could be part of a larger HTML rendering)
                await Task.Delay(500); // Simulate chunk processing

                // Periodically check for cancellation in long-running operations
                if (token.IsCancellationRequested)
                {
                    Console.WriteLine("Cancellation requested. Throwing exception.");
                    token.ThrowIfCancellationRequested();  // This will trigger an OperationCanceledException
                }
            }

            // Simulate PDF creation after the long process
            var pdf = await Renderer.RenderHtmlAsPdfAsync("<h1>Hello, PDF!</h1>");

            // Save the PDF after ensuring no cancellation occurred
            pdf.SaveAs("output.pdf");
            Console.WriteLine("PDF generated successfully.");
        }
        catch (OperationCanceledException)
        {
            // Handle task cancellation
            Console.WriteLine("PDF generation was canceled.");
        }
        catch (Exception ex)
        {
            // Handle other exceptions
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}

public class Program
{
    public static async Task Main(string[] args)
    {
        // Create a CancellationTokenSource
        var cancellationTokenSource = new CancellationTokenSource();

        // Create our cancellation token
        var token = cancellationTokenSource.Token;

        // Start the PDF generation task
        var pdfGenerator = new PdfGenerator();
        Task pdfTask = pdfGenerator.GeneratePdfWithCancellation(token);

        // Simulate a cancellation scenario
        Console.WriteLine("Press any key to cancel PDF generation...");
        Console.ReadKey();

        // Cancel the task by calling Cancel() on the CancellationTokenSource
        cancellationTokenSource.Cancel();

        try
        {
            // Await the task to handle any exceptions, such as cancellation
            await pdfTask;
        }
        catch (OperationCanceledException)
        {
            // Confirm the cancellation
            Console.WriteLine("The PDF generation was canceled.");
        }
        finally
        {
            cancellationTokenSource.Dispose();
        }

        Console.WriteLine("Program finished.");
    }
}
using IronPdf;
using System;
using System.Threading;
using System.Threading.Tasks;

public class PdfGenerator
{
    public async Task GeneratePdfWithCancellation(CancellationToken token)
    {
        var Renderer = new ChromePdfRenderer();
        try
        {
            // Check for cancellation before starting
            token.ThrowIfCancellationRequested();

            // Simulating a long task that can be checked for cancellation periodically
            for (int i = 0; i < 10; i++)
            {
                // Simulating a piece of work (this could be part of a larger HTML rendering)
                await Task.Delay(500); // Simulate chunk processing

                // Periodically check for cancellation in long-running operations
                if (token.IsCancellationRequested)
                {
                    Console.WriteLine("Cancellation requested. Throwing exception.");
                    token.ThrowIfCancellationRequested();  // This will trigger an OperationCanceledException
                }
            }

            // Simulate PDF creation after the long process
            var pdf = await Renderer.RenderHtmlAsPdfAsync("<h1>Hello, PDF!</h1>");

            // Save the PDF after ensuring no cancellation occurred
            pdf.SaveAs("output.pdf");
            Console.WriteLine("PDF generated successfully.");
        }
        catch (OperationCanceledException)
        {
            // Handle task cancellation
            Console.WriteLine("PDF generation was canceled.");
        }
        catch (Exception ex)
        {
            // Handle other exceptions
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}

public class Program
{
    public static async Task Main(string[] args)
    {
        // Create a CancellationTokenSource
        var cancellationTokenSource = new CancellationTokenSource();

        // Create our cancellation token
        var token = cancellationTokenSource.Token;

        // Start the PDF generation task
        var pdfGenerator = new PdfGenerator();
        Task pdfTask = pdfGenerator.GeneratePdfWithCancellation(token);

        // Simulate a cancellation scenario
        Console.WriteLine("Press any key to cancel PDF generation...");
        Console.ReadKey();

        // Cancel the task by calling Cancel() on the CancellationTokenSource
        cancellationTokenSource.Cancel();

        try
        {
            // Await the task to handle any exceptions, such as cancellation
            await pdfTask;
        }
        catch (OperationCanceledException)
        {
            // Confirm the cancellation
            Console.WriteLine("The PDF generation was canceled.");
        }
        finally
        {
            cancellationTokenSource.Dispose();
        }

        Console.WriteLine("Program finished.");
    }
}
Imports IronPdf
Imports System
Imports System.Threading
Imports System.Threading.Tasks

Public Class PdfGenerator
	Public Async Function GeneratePdfWithCancellation(ByVal token As CancellationToken) As Task
		Dim Renderer = New ChromePdfRenderer()
		Try
			' Check for cancellation before starting
			token.ThrowIfCancellationRequested()

			' Simulating a long task that can be checked for cancellation periodically
			For i As Integer = 0 To 9
				' Simulating a piece of work (this could be part of a larger HTML rendering)
				Await Task.Delay(500) ' Simulate chunk processing

				' Periodically check for cancellation in long-running operations
				If token.IsCancellationRequested Then
					Console.WriteLine("Cancellation requested. Throwing exception.")
					token.ThrowIfCancellationRequested() ' This will trigger an OperationCanceledException
				End If
			Next i

			' Simulate PDF creation after the long process
			Dim pdf = Await Renderer.RenderHtmlAsPdfAsync("<h1>Hello, PDF!</h1>")

			' Save the PDF after ensuring no cancellation occurred
			pdf.SaveAs("output.pdf")
			Console.WriteLine("PDF generated successfully.")
		Catch e1 As OperationCanceledException
			' Handle task cancellation
			Console.WriteLine("PDF generation was canceled.")
		Catch ex As Exception
			' Handle other exceptions
			Console.WriteLine($"An error occurred: {ex.Message}")
		End Try
	End Function
End Class

Public Class Program
	Public Shared Async Function Main(ByVal args() As String) As Task
		' Create a CancellationTokenSource
		Dim cancellationTokenSource As New CancellationTokenSource()

		' Create our cancellation token
		Dim token = cancellationTokenSource.Token

		' Start the PDF generation task
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfTask As Task = pdfGenerator.GeneratePdfWithCancellation(token)

		' Simulate a cancellation scenario
		Console.WriteLine("Press any key to cancel PDF generation...")
		Console.ReadKey()

		' Cancel the task by calling Cancel() on the CancellationTokenSource
		cancellationTokenSource.Cancel()

		Try
			' Await the task to handle any exceptions, such as cancellation
			Await pdfTask
		Catch e1 As OperationCanceledException
			' Confirm the cancellation
			Console.WriteLine("The PDF generation was canceled.")
		Finally
			cancellationTokenSource.Dispose()
		End Try

		Console.WriteLine("Program finished.")
	End Function
End Class
$vbLabelText   $csharpLabel

Konsol Çıkışı

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

PDF Çıkışı

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

Bu örnekte, IronPDF ile uzun süren bir PDF oluşturma görevini iptal etmek için C# programında bir CancellationToken kullanmayı gösteriyoruz. Kod iki bölümde yapılandırılmıştır: PDF oluşturma süreci (PdfGenerator sınıfı) ve ana program mantığı (Program sınıfı).

  • Class PdfGenerator: Bu sınıf, bir PDF dosyası oluşturmayı simüle eden, bir CancellationToken kullanarak iptali destekleyen bir yöntem içerir.
  • main metodunda CancellationTokenSource() kullanarak iptal simgesi kaynağımızı oluşturuyoruz ve ardından CancellationTokenSource 'ın Token özelliğini ona ileterek simge nesnemizi oluşturuyoruz.
  • HTML içeriğini bir PDF belgesine renderlamak için IronPDF kütüphanesinden ChromePdfRenderer kullanılır.
  • GeneratePdfWithCancellation metodu asenkron (async) çalışır ve bir Task döndürür. Bu metod, iptal talebi ile görev iptalini yönetmek için bir CancellationToken (token) kabul eder.
  • CancellationToken, uzun süren işlemleri güvenle iptal etmemize olanak tanır. Ancak, iptal işbirlikçidir, yani görevin kendisi düzenli aralıklarla simge durumunu kontrol etmelidir.
  • Bu kodda, periyodik iptal kontrollerine sahip uzun bir görev simüle ediyoruz. Ana nokta, PDF oluşturma süreci sırasında iptal (token.IsCancellationRequested) için manuel kontrol ettiğimiz ve token kendisine verildiğinde iptal metodunu çalıştırmaya hazır olduğumuzdur.
  • Kullanıcı, programın iptalini belirtmek için bir tuşa bastığında, görev zarif bir şekilde durur ve bir OperationCanceledException fırlatır, PDF oluşturma işleminin uygun ve zamanında tamamlanmasını önler.
  • İptalin gerçekleşmediği durumda, tamamlanmış görev sürecinin program tarafından çalıştırılmasını önlemek için üretilen PDF 'output.pdf' olarak kaydedilir.

IronPDF'yi CancellationToken ile Kullanmanın Gerçek Dünya Kullanım Durumları

IronPDF ile bir veya birden fazla iptal simgesini kullanmak dikkate değer performans ve kullanıcı deneyimi geliştirmeleri sağlayabileceği birkaç pratik durum vardır. İşte birkaç örnek:

1. Web Uygulamaları

Web uygulamasında, kullanıcılar genellikle PDF formatında rapor oluşturma gibi eylemleri başlatırlar. Ancak, kullanıcı sayfadan ayrılır veya tarayıcıyı kapatırsa, sistem bunu algılayabilir ve PDF oluşturma sürecini durdurmak için CancellationToken kullanabilir.

HttpContext.Response.RegisterForDispose(CancellationTokenSource);
HttpContext.Response.RegisterForDispose(CancellationTokenSource);
HttpContext.Response.RegisterForDispose(CancellationTokenSource)
$vbLabelText   $csharpLabel

Bu basit uygulama, artık ihtiyaç duyulmayan görevlere kaynak ayırmayarak web sunucularının daha etkili bir şekilde ölçeklenmesine olanak tanır.

2. Uzun Süreli Raporlar

Raporlama uygulamalarında, kullanıcılar büyük veri setlerinin PDF olarak dışa aktarılmasını talep edebilir. Kullanıcı fikrini değiştirdiğinde veya yanlış bir sorgu yaptığında, CancellationToken, görevi yarıda iptal etmenize izin verir, bu da kaynak israfını önler.

3. Arka Plan Servisleri

Arka plan hizmetleri veya mikro hizmetlerde, büyük PDF grupları oluşturmak gibi önemli miktarda zaman alan görevler, CancellationToken kullanılarak daha verimli bir şekilde yönetilebilir. Hizmet kapatılmak veya ölçeklendirilmek üzereyken, devam eden görevler temiz bir şekilde iptal edilebilir, böylece veri kaybı veya bozulma olmaz.

Sonuç

IronPDF ile iptal tokenlerini kullanma konusundaki bugünkü tartışmamızın sonuna geldiğimize göre, bunları PDF projelerinize bir profesyonel gibi uygulayabileceksiniz! IronPDF ile C# CancellationToken kullanmak, PDF oluşturma görevlerini zarif bir şekilde ele alan daha verimli, tepkisel uygulamalar oluşturmanızı sağlar. Bu yaklaşım, görevlerin, yürütme sırasında güvenli noktalarda iptal isteklerini kontrol etmesine olanak tanıyan işbirlikçi bir iptal modeli sağlar, ani olarak sonlandırılmak yerine.

Uzun süreli raporları yönetiyor olun, web uygulamalarında isteğe bağlı PDF oluşturma veya arka planda hizmetler, CancellationToken, veya aynı anda birden fazla token eklemek, gereksiz görevlerin iptal edilmesini sağlar, kaynak israfını önler ve kullanıcı deneyimini artırır.

Sadece birkaç satır kodla, uygulamanızın ölçeklenebilirliğini ve tepkiselliğini artırabilir, kullanıcıların eylemleri üzerinde daha fazla kontrol sahibi olmasını sağlayabilirsiniz. Henüz IronPDF'i keşfetmediyseniz, ücretsiz deneme için şimdi mükemmel bir zaman ve güçlü PDF oluşturma yeteneklerinin C# projelerinizi nasıl dönüştürebileceğini keşfedin.

Sıkça Sorulan Sorular

C#'da uzun süreli görevleri yönetmek için nasıl bir CancellationToken kullanabilirim?

CancellationToken'u, göreve geçirerek ve belirli aralıklarla iptal talebi olup olmadığını kontrol ederek uzun süreli görevlerinize entegre edebilirsiniz. Bu, görevleri nazikçe sonlandırmanıza, kaynakları serbest bırakmanıza ve uygulamanın yanıt verme yeteneğini korumanıza olanak tanır.

PDF oluşturma sırasında neden bir CancellationToken önemlidir?

PDF oluşturma sırasında, kullanıcı bir sayfadan ayrıldığında gibi, görevlerin iptal edilmesine olanak tanıyarak kaynakların verimli yönetilmesini sağlar. Bu, aşırı sunucu yükünü önler ve kullanıcı deneyimini geliştirir.

C# PDF oluşturma görevinde bir CancellationToken nasıl uygularım?

C# PDF oluşturma görevinde bir CancellationToken uygulamak için, tokenı metodunuza geçirin ve yürütme sırasında düzenli aralıklarla iptal taleplerini kontrol edin. İptalin tespit edilmesi durumunda, görevi nazikçe sonlandırabilirsiniz.

CancellationToken'un PDF oluşturma işlemlerinde asenkron yöntemlerle kullanılmasının amacı nedir?

PDF oluşturma işlemlerinde CancellationToken ile asenkron yöntemler kullanmak, görevlerin asenkron olarak çalışmasına olanak tanır, uygulamanın yanıt verme gücünü artırır ve artık gerekli olmayan görevlerin iptal edilmesini sağlar.

CancellationToken, web uygulamalarında kullanıcı deneyimini nasıl geliştirir?

Bir CancellationToken kullanarak, web uygulamaları kullanıcı bir sayfadan ayrıldığında PDF oluşturma gibi görevleri iptal edebilir, gereksiz işlemeyi önler ve uygulamanın yanıt verebilirliğini korur; bu da kullanıcı deneyimini geliştirir.

Asenkron PDF oluşturma işleminde ChromePdfRenderer rolü nedir?

IronPDF'den ChromePdfRenderer HTML içeriğini bir PDF belgesine dönüştürmek için kullanılır. Asenkron işlemleri destekler, bir CancellationToken kullanarak görev yaşam döngüsünü ve yanıt verilebilirliğini etkili bir şekilde yönetmenize olanak tanır.

PDF oluşturma işlemi sırasında bir iptal talebi yapılırsa ne olabilir?

PDF oluşturma işlemi sırasında bir iptal talebi yapılması durumunda, görev CancellationToken durumunu kontrol eder. İptal tespit edilirse, işlemi durdurmak için bir OperationCanceledException atıp kaynakları korur.

CancellationToken uygulamaların ölçeklenebilirliğini nasıl artırır?

CancellationToken, gereksiz görevlerin, örneğin PDF üretimi sırasında, iptal edilmesine olanak tanıyarak kaynak tüketimini azaltır ve uygulamanın genel performansını artırır.

Arka plan hizmetlerinde CancellationToken kullanmanın faydaları nelerdir?

Arka plan hizmetlerinde, bir CancellationToken uzun süreli görevlerin yönetilmesine olanak tanır; örneğin, hizmet kapatıldığında veya ölçeklendirme operasyonlarında toplu PDF işlemlerinin temiz bir şekilde iptal edilmesini sağlar.

CancellationToken'un IronPDF ile entegrasyonu uygulama verimliliğini nasıl artırır?

IronPDF ile CancellationToken entegrasyonu, gereksiz PDF oluşturma görevlerini iptal ederek daha iyi kaynak yönetimi sağlar. Bu, uygulama verimliliğini ve yanıt verebilirliğini artırırken sunucu yükünü azaltır.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Chief Technology Officer

Jacob Mellor, Iron Software'in Teknoloji Müdürü ve C# PDF teknolojisinin öncüsü olan vizyoner bir mühendis. Iron Software’in temel kod tabanının ilk geliştiricisi olarak, şirketin ürün mimarisini kuruluşundan bu yana şekillendirdi ve CEO Cameron Rimington ile birlikte NASA, Tesla ve ...

Daha Fazlasını Oku

Iron Destek Ekibi

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