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üreli görevleri verimli bir şekilde yönetmek kritik öneme sahiptir, özellikle büyük veya karmaşık PDF dosyalarının oluşturulması yaygın olduğunda. C# geliştiricileri genellikle sorunsuz PDF oluşturmak için IronPDF'i kullanır, ancak potansiyel olarak uzun süren PDF oluşturma görevlerini yönetmek, kullanıcı kesintilerini veya iptallerini yönetmenin bir yolunu gerektirir.

Bu noktada, C#'ta CancellationToken devreye girer. Bunu IronPDF ile entegre ederek, PDF oluşturma görevlerinizin hem duyarlı hem de etkin olmasını sağlayabilirsiniz. Bu makalede CancellationToken önemini, IronPDF ile neden iyi eşleştiğini ve görevleri nazikçe iptal etmek için nasıl uygulayabileceğinizi araştıracağız.

C#'ta CancellationToken Nedir?

CancellationToken, C#'ta eşzamanlı programlamanın temel bir parçasıdır. Bir görevin iptal edilmesini sinyal vermenizi sağlar, geliştiricilere uzun süren işlemler üzerinde daha fazla kontrol sunar. Bu, raporları veya faturaları üretme gibi görevleri yürütürken özellikle yararlı olabilir; dinamik raporlar oluşturmak için hedef miktarınıza kadar veriden sürekli raporlar üretmek isteyebilirsiniz. Bu noktaya ulaştığınızda, işlemin iptal edilmesi gerektiğini belirtmek için C# iptal tokenlerini kullanabilirsiniz, bu da programın zarif bir şekilde sonlanmasını sağlar.

Nasıl Çalışır?

Özetle, bir CancellationToken, bir göreve veya yönteme geçilir ve iptalin istenip istenmediğini periyodik olarak kontrol eder. Eğer öyleyse, görev nazikçe sona erebilir, kaynakları serbest bırakır ve uygulamanızın duyarlılığını artırır. Bu, karmaşık belgelerin oluşturulmasının biraz zaman alabileceği PDF oluşturma gibi durumlarda özellikle kullanışlıdır.

CancellationTokens kullanarak, gereksiz yere uzun süren görevlerin olası dezavantajlarından, sistem kaynaklarının israfı ve kötü kullanıcı deneyimi gibi, kaçınırsınız.

Dahili İptal Tokenleri

C#'ta, dahili bir iptal tokeni, belirli bir sınıf veya yöntemde oluşturulan ve yönetilen bir iptal tokenine atıfta bulunur, dış bir kaynaktan geçilmek yerine. Bu, tek bir bileşenin kapsamı içinde görev iptali üzerinde daha ince bir kontrol sağlar ve bu bileşen içinden kaynaklanan iptal taleplerini izleme ve bunlara cevap verme olanağı tanır.

Dahili bir iptal tokeni kullanmak, özellikle iptal mantığını sınıfınızın tüketicilerine açık hale getirmeden kapsamak istediğiniz senaryolarda yararlıdır ve böylece temiz bir arayüzü korur. Bu yaklaşım, kodun modülerliğini artırabilir ve geniş CancellationToken çerçevesi tarafından sağlanan esneklikten yararlanırken karmaşık eşzamanlı iş akışlarını yönetmeyi kolaylaştırabilir.

Neden IronPDF ile Bir İptal Tokeni Kullanmalı?

Özellikle web uygulamalarında veya karmaşık raporlama sistemlerinde PDF oluştururken, bir kullanıcı büyük bir PDF dosyası oluşturmak gibi bir görevi başlatabilir ancak ardından uzaklaşabilir veya artık sonucu istemeyebilir. Bu durumlarda, gereksiz sunucu veya arayüz yükünü önlemek için PDF oluşturma sürecini iptal etme seçeneğini istemek isteyebilirsiniz.

İşte IronPDF ile CancellationToken kullanmanın neden kritik olduğuna dair:

1. Gereksiz Yükten Önleyin

Bir kullanıcı talep ettiği PDF'ye artık ihtiyaç duymuyorsa, işlemin devam etmesinin bir anlamı yoktur. CancellationToken kullanarak, PDF oluşturma görevini durdurarak sunucularınızdaki fazla yükü önleyebilir ve genel uygulama performansını artırabilirsiniz.

2. Kullanıcı Deneyimini Geliştirin

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

3. Ölçeklenebilirliği Artırın

Ç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üvenli bir şekilde iptal etmenize ve diğer istekleri etkili bir şekilde yönetmek için kaynakları serbest bırakmanıza olanak tanır.

IronPDF ile CancellationToken Nasıl Uygulanır

Artık CancellationToken'ın neden faydalı olduğunu anladık, şimdi bunu IronPDF ile nasıl uygulayacağımızı inceleyelim.

Adım 1: Projenize IronPDF'i Kurmak

IronPDF i kullanmaya başlamak için öncelikle yüklemeniz gerekecek. Eğer zaten yüklüyse, bir sonraki bölüme geçebilirsiniz; aksi takdirde, IronPDF kütüphanesinin nasıl yükleneceği aşağıdaki adımlarda açıklanmaktadır.

NuGet Paket Yöneticisi Konsolu Üzerinden

NuGet Paket Yöneticisi Konsolu'nu kullanarak IronPDF'i 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

Solution İçin NuGet Paket Yöneticisi Üzerinden

Visual Studio'yu açarak 'Araçlar -> NuGet Paket Yöneticisi -> Çözüm İçin NuGet Paketlerini Yönet' bölümüne gidin ve IronPDF'i arayın. Buradan, yapmanız gereken tek şey projenizi seçip 'Yükle'ye tıklamak ve IronPDF projenize eklenmiş olacak.

IronPDF'i yükledikten sonra, IronPDF'i kullanmaya başlamak için tek yapmanız gereken, kodunuzun en üstüne doğru 'using' deyimini eklemektir:

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

Adım 2: Asenkron PDF Oluşturma Yönteminde İptal Tokenlerini Kullanma

Gerçek uygulamaya dalalım. Bu örnekte, basit bir PDF'yi HTML'den IronPDF kullanarak oluşturacağız, ancak, gerekirse görevin iptal edilmesini sağlayan bir CancellationToken ile.

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 Çıktısı

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 bir CancellationToken kullanıldığını bir C# programında nasıl kullanacağınızı 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ı).

  • PdfGenerator Sınıfı: Bu sınıf, bir PDF dosyası oluşturmayı simule eden ve CancellationToken aracılığıyla iptali destekleyen bir yöntem içerir.
  • Ana yöntemde CancellationTokenSource() kullanarak iptal token kaynağımızı oluşturuyoruz ve ardından token nesnemizi CancellationTokenSource'ın Token özelliğini ona geçirerek oluşturuyoruz.
  • ChromePdfRenderer, HTML içeriğini bir PDF belgesine işlemek için IronPDF kütüphanesinden kullanılır.
  • GeneratePdfWithCancellation yöntemi eşzamansız (async) olup bir Görev döndürür. Bu yöntem, iptal isteği yoluyla görev iptalini ele almak için bir CancellationToken (token) kabul eder.
  • CancellationToken, uzun süreli işlemleri güvenli bir şekilde iptal etmemize olanak tanır. Ancak, iptal etmek işbirliğine dayalıdır, yani görevin kendisi token durumunu periyodik olarak kontrol etmelidir.
  • Bu kodda, sürekliliği iptal için periyodik kontroller ile uzun bir görevi simule ediyoruz. Ana nokta, PDF oluşturma süreci sırasında iptali manuel olarak kontrol etmemiz (token.IsCancellationRequested) ve eğer token iletilirse iptal yöntemini çalıştırmaya hazır olmamızdır.
  • Kullanıcı programın iptal edilmesini sinyal vermek için bir tuşa bastığında, görev zarif bir şekilde durur ve OperationCanceledException atar, PDF oluşturmanın uygun ve zamanlı bir şekilde tamamlanmasını önler.
  • İptal gerçekleşmediğinde programı tüm görev sürecini çalıştırmaktan önlemek için sonuç PDF'i 'output.pdf' olarak kaydedilir.

IronPDF ve CancellationToken'ın Gerçek Dünya Kullanım Senaryoları

IronPDF ile iptal tokenlerinden bir veya birkaçını kullanmanın uygulamanızın performansını ve kullanıcı deneyimini artırabileceğ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ır. Ancak, kullanıcı sayfadan uzaklaştığında veya tarayıcıyı kapattığında, 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ırmayı önleyerek 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 kümelerinin PDF olarak dışa aktarılmasını talep edebilir. Eğer kullanıcı fikrini değiştirirse veya yanlış bir sorgu yaparsa, CancellationToken, görevi yarıda durdurarak kaynak israfını önlemenizi sağlar.

3. Arka Plan Hizmetleri

Arka plan hizmetlerinde veya mikro hizmetlerde, büyük PDF gruplarının oluşturulması gibi önemli miktarda zaman alan görevler, CancellationToken kullanılarak daha verimli yönetilebilir. Hizmet kapatılacak veya ölçeklendirilecek olduğunda, devam eden görevler temiz bir şekilde iptal edilebilir, verilerin kaybolmasını veya bozulmasını önleyerek.

Sonuç

Bugünün tartışmasının sonuna geldikten sonra, IronPDF'i iptal tokenleriyle kullanarak profesyonel gibi PDF projelerinize uygulayabileceksiniz! C# CancellationToken kullanarak IronPDF ile daha etkin, duyarlı uygulamalar oluşturarak PDF oluşturma görevlerini zarif bir şekilde yönetebilirsiniz. Bu yaklaşım, görevlerin yürütme sırasında güvenli noktalarda iptal isteklerini kontrol etmesine izin veren işbirlikçi bir iptal modeli sağlar, aniden sonlandırılmak yerine.

İster uzun süreli raporları yönetin, web uygulamalarında talebe bağlı PDF oluşturmayı ister yapıyor olun, isterse arka plan hizmetleriyle ilgileniyor olun, bir CancellationToken veya aynı anda birden fazla token yapısına dahil etmek, gereksiz görevlerin iptal edilmesini ve tüketilen kaynakların önlenmesini sağlarken kullanıcı deneyimini artırır.

Birkaç satır kodla, uygulamanızın ölçeklenebilirliğini ve duyarlılığını artırabilir, kullanıcıların işlemleri üzerinde daha fazla kontrol sahibi olmasına izin verebilirsiniz. Henüz IronPDF'i keşfetmediyseniz, ücretsiz deneme sürümünü şimdi denemek ve güçlü PDF oluşturma yeteneklerinin C# projelerinizi nasıl dönüştürebileceğini keşfetmek için mükemmel bir zaman.

Sıkça Sorulan Sorular

C#'de uzun süre çalışan görevleri yönetmek için bir CancellationToken nasıl kullanabilirim?

CancellationToken'ı, göreve geçirerek ve periyodik olarak iptal isteği olup olmadığını kontrol ederek uzun süre çalışan görevlerinize entegre edebilirsiniz. Bu, görevlerin zarif bir şekilde sonlandırılmasını sağlar, kaynakları serbest bırakır ve uygulama yanıtını sürdürür.

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

PDF oluşturma esnasında, bir CancellationToken kaynakları verimli bir şekilde yönetmeye yardımcı olur çünkü bir kullanıcı bir sayfadan ayrıldığında gereksiz hale gelen görevlerin iptal edilmesine izin verir. Bu, aşırı sunucu yükünü önler ve kullanıcı deneyimini artırır.

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

C# PDF oluşturma görevinde bir CancellationToken uygulamak için, token'ı yönteminize geçirirsiniz ve yürütme sırasında düzenli aralıklarla iptal isteklerini kontrol edersiniz. Eğer bir iptal tespit edilirse, görevi zarif bir şekilde sonlandırabilirsiniz.

PDF oluşturma sürecinde async yöntemlerin CancellationToken ile kullanılmasının amacı nedir?

PDF oluşturma sürecinde async yöntemlerin CancellationToken ile kullanılması, görevlerin asenkron bir şekilde çalışmasını sağlar, uygulama yanıtını artırır ve gereksiz hale geldiklerinde görevlerin iptal edilmesini mümkün kılar.

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

CancellationToken kullanarak, web uygulamaları bir kullanıcı bir sayfadan ayrıldığında PDF oluşturma gibi görevleri iptal edebilir, gereksiz işlemeyi önler ve uygulama yanıtını korur, böylece kullanıcı deneyimini artırır.

Asenkron PDF oluşturma işlemlerinde ChromePdfRenderer'ın rolü nedir?

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

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

PDF oluşturma işlemi sırasında bir iptal isteği yapılırsa, görev CancellationToken durumunu kontrol eder. İptal tespit edilirse, bir OperationCanceledException fırlatır, işlemi durdurarak kaynakları korur.

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

CancellationToken, gereksiz görevlerin iptal edilmesine olanak tanıyarak, örneğin PDF oluşturma sırasında, 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 kullanmak, hizmet kapatılırken veya ölçeklenme operasyonları sırasında görevlerin temiz bir şekilde iptal edilmesine olanak tanıyarak uzun süre çalışan görevlerin yönetilmesini sağlar.

IronPDF ile CancellationToken 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 da uygulamanın verimliliğini ve yanıtını artırırken sunucu yükünü azaltır.

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