Iron Software Kütüphanelerini C# İptal Etme Sinyali ile Kullanma
Modern .NET geliştiricileri genellikle IronPDF, IronOCR, IronWord ve IronXL kütüphanelerini entegre ederken asenkron programlama ile çalışır. Bu ürünler genellikle uzun süreli çalışan görevler yürütür — örneğin, PDF'leri işle, OCR içeriği işleyin veya büyük elektronik tablolar oluşturun — ve uygulamaları duyarlı tutmanın doğru yolu, C# CancellationToken tabanlı iptali kullanmaktır.
Bu makale, iptal belirteçlerini nasıl kullanacağınızı, bir yöntemin bir belirteci nasıl kabul ettiğini, görev iptalini nasıl yöneteceğinizi ve bu desenleri Iron Software kütüphaneleri ile uygun ve zamanında entegre etmeyi açıklar. Ayrıca en iyi uygulamaları, kaynak yönetimini ve birden fazla CancellationTokens'u aynı anda nasıl kullanacağınızı da kapsıyoruz.
Iron Software İş Yüklerinde İptal Talepleri Neden Önemlidir

Iron Software araçları sıklıkla asenkron işlemler yürütür - örneğin:
- Bir IronPDF HTML-to-PDF dönüşümü
- Uzun süreli bir IronOCR OCR çıkartması
- Arka Plan Hizmetleri içinde bir IronWord veya IronXL belgesi oluşturma
- PDF oluşturma öncesi büyük bir HttpClient web isteği
Bunlar, kullanıcı bir İptal butonuna tıkladığında, başka bir yere gidildiğinde veya çağıran kod bir CancellationRequest yayındığında nazikçe sonlanması gereken uzun işlemler olabilir.
Iptal belirteçleri kullanmak şunları sağlar:
- Duyarlı uygulamalar
- Daha iyi kaynak yönetimi
- Yönetilmeyen kaynakların kontrollü serbest bırakılması
- Temiz bir işbirlikçi iptal modeli
C# CancellationToken Temellerini Anlamak
C#, bir CancellationToken belirteci oluşturan CancellationTokenSource sınıfını sağlar. Bir CTS yeni CancellationTokenSource() asenkron yöntemlere geçirilen bir belirteç oluşturabilir.
var cts = new CancellationTokenSource();
CancellationToken token = cts.Token;var cts = new CancellationTokenSource();
CancellationToken token = cts.Token;Dim cts As New CancellationTokenSource()
Dim token As CancellationToken = cts.TokenBir belirteç, bir yöntem parametresi kullanılarak iletilir:
public async Task ProcessPdfAsync(string html, CancellationToken token)public async Task ProcessPdfAsync(string html, CancellationToken token)Public Async Function ProcessPdfAsync(html As String, token As CancellationToken) As TaskYöntem içinde ara sıra kontrol edin:
token.ThrowIfCancellationRequested();token.ThrowIfCancellationRequested();token.ThrowIfCancellationRequested()veya IsCancellationRequested özelliğini denetleyin:
if (token.IsCancellationRequested)
{
Console.WriteLine("Cancellation requested.");
return;
}if (token.IsCancellationRequested)
{
Console.WriteLine("Cancellation requested.");
return;
}If token.IsCancellationRequested Then
Console.WriteLine("Cancellation requested.")
Return
End IfBu, iptal edilen etkinliğin yalnızca kodunuz belirteci kontrol ettiğinde meydana geldiği bir işbirlikçi iptal modeli sağlar.
IronPDF ile CancellationToken Kullanımı
IronPDF'nin HTML rendere'si asenkron programlama için tasalanmıştır, bu yüzden iptali doğal bir şekilde entegre edebilirsiniz.
public async Task<PdfDocument> BuildPdfAsync(string html, CancellationToken token)
{
Console.WriteLine("\n[Generator] Starting PDF rendering process...");
var renderer = new ChromePdfRenderer();
token.ThrowIfCancellationRequested();
Console.WriteLine("[Generator] Simulating a 2-second delay...");
await Task.Delay(2000, token);
token.ThrowIfCancellationRequested();
Console.WriteLine("[Generator] Delay complete. Starting actual rendering...");
// This is the working overload for your library version
return await renderer.RenderHtmlAsPdfAsync(html);
}public async Task<PdfDocument> BuildPdfAsync(string html, CancellationToken token)
{
Console.WriteLine("\n[Generator] Starting PDF rendering process...");
var renderer = new ChromePdfRenderer();
token.ThrowIfCancellationRequested();
Console.WriteLine("[Generator] Simulating a 2-second delay...");
await Task.Delay(2000, token);
token.ThrowIfCancellationRequested();
Console.WriteLine("[Generator] Delay complete. Starting actual rendering...");
// This is the working overload for your library version
return await renderer.RenderHtmlAsPdfAsync(html);
}Imports System
Imports System.Threading
Imports System.Threading.Tasks
Public Class PdfGenerator
Public Async Function BuildPdfAsync(html As String, token As CancellationToken) As Task(Of PdfDocument)
Console.WriteLine(vbCrLf & "[Generator] Starting PDF rendering process...")
Dim renderer As New ChromePdfRenderer()
token.ThrowIfCancellationRequested()
Console.WriteLine("[Generator] Simulating a 2-second delay...")
Await Task.Delay(2000, token)
token.ThrowIfCancellationRequested()
Console.WriteLine("[Generator] Delay complete. Starting actual rendering...")
' This is the working overload for your library version
Return Await renderer.RenderHtmlAsPdfAsync(html)
End Function
End ClassÖrnek Konsol Çıktısı

Bu, birden fazla noktada iptali destekleyen bir public async Task gösterir. Iptal gerçekleştiğinde, yöntem bir OperationCanceledException fırlatır, bu da bir catch bloğunda ele alınır.
IronOCR ile CancellationToken Kullanımı
IronOCR'nin resimleri tarayıcı uzun süreli işlemi iç iptali kullanmaktan da faydalanır:
public class OcrProcessor
{
private readonly IronOcr.IronTesseract ocr = new IronOcr.IronTesseract();
public async Task<string> ExtractTextAsync(string path, CancellationToken token)
{
// Check for cancellation immediately upon entering the method.
token.ThrowIfCancellationRequested();
// Run the synchronous OCR method on a background thread.
// This is the correct pattern for cancellable synchronous wrappers.
return await Task.Run(() => ocr.Read(path).Text, token);
}
}public class OcrProcessor
{
private readonly IronOcr.IronTesseract ocr = new IronOcr.IronTesseract();
public async Task<string> ExtractTextAsync(string path, CancellationToken token)
{
// Check for cancellation immediately upon entering the method.
token.ThrowIfCancellationRequested();
// Run the synchronous OCR method on a background thread.
// This is the correct pattern for cancellable synchronous wrappers.
return await Task.Run(() => ocr.Read(path).Text, token);
}
}Imports System.Threading
Imports System.Threading.Tasks
Imports IronOcr
Public Class OcrProcessor
Private ReadOnly ocr As New IronTesseract()
Public Async Function ExtractTextAsync(path As String, token As CancellationToken) As Task(Of String)
' Check for cancellation immediately upon entering the method.
token.ThrowIfCancellationRequested()
' Run the synchronous OCR method on a background thread.
' This is the correct pattern for cancellable synchronous wrappers.
Return Await Task.Run(Function() ocr.Read(path).Text, token)
End Function
End ClassÖrnek Çıktı

IronWord belge oluşturma ve IronXL elektronik tablo montajı aynı şekilde çalışır. Çünkü bunlar, kullanıcı arayüzü ipliklerini veya Arka Plan Hizmetlerini engellemeyen iptal edilecek işlemler.
Uzun Süren İşlemlerde Dönemsel Olarak İptal Kontrolü Yapmak
Ortak bir örüntü, iptali kontrol ederek döngü yapmaktır:
public async Task LongRunningOperation(CancellationToken token)
{
for (int i = 0; i < 1000; i++)
{
token.ThrowIfCancellationRequested();
await Task.Delay(10, token); // await Task.Delay helps cooperative cancellation
}
}public async Task LongRunningOperation(CancellationToken token)
{
for (int i = 0; i < 1000; i++)
{
token.ThrowIfCancellationRequested();
await Task.Delay(10, token); // await Task.Delay helps cooperative cancellation
}
}Imports System.Threading
Imports System.Threading.Tasks
Public Async Function LongRunningOperation(token As CancellationToken) As Task
For i As Integer = 0 To 999
token.ThrowIfCancellationRequested()
Await Task.Delay(10, token) ' Await Task.Delay helps cooperative cancellation
Next
End FunctionBu, uygun ve zamanda iptal taleplerinin ele alınmasını ve sistemin gereksiz döngü yapmamasını sağlar.
IronPDF Rendesi Öncesi HttpClient ile CancellationToken Kullanımı
Bir PDF oluşturmadan önce HTML almak için bir web isteği gerçekleştirirken, her zaman belirteci geçin:
var client = new HttpClient();
public async Task<string> FetchHtmlAsync(string url, CancellationToken token)
{
var response = await client.GetAsync(url, token);
if (!response.IsSuccessStatusCode)
throw new Exception("Error occurred while requesting content.");
return await response.Content.ReadAsStringAsync(token);
}var client = new HttpClient();
public async Task<string> FetchHtmlAsync(string url, CancellationToken token)
{
var response = await client.GetAsync(url, token);
if (!response.IsSuccessStatusCode)
throw new Exception("Error occurred while requesting content.");
return await response.Content.ReadAsStringAsync(token);
}Imports System.Net.Http
Imports System.Threading
Imports System.Threading.Tasks
Dim client As New HttpClient()
Public Async Function FetchHtmlAsync(url As String, token As CancellationToken) As Task(Of String)
Dim response = Await client.GetAsync(url, token)
If Not response.IsSuccessStatusCode Then
Throw New Exception("Error occurred while requesting content.")
End If
Return Await response.Content.ReadAsStringAsync(token)
End FunctionBu, kullanıcı başka bir yere gittiğinde, HttpClient'in zamanında iptal etmesini sağlar.
.NET Core Arka Plan Hizmetlerinde İptal
.NET Core Arka Plan Hizmetleri, ExecuteAsync yöntemine otomatik olarak geçirilen bir iç iptal belirteci içerir. Iron Software araçlarını çalıştırırken bunu kullanın:
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
await ProcessPdfAsync("<h1>Hello</h1>", stoppingToken);
await Task.Delay(5000, stoppingToken);
}
}protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
await ProcessPdfAsync("<h1>Hello</h1>", stoppingToken);
await Task.Delay(5000, stoppingToken);
}
}Protected Overrides Async Function ExecuteAsync(stoppingToken As CancellationToken) As Task
While Not stoppingToken.IsCancellationRequested
Await ProcessPdfAsync("<h1>Hello</h1>", stoppingToken)
Await Task.Delay(5000, stoppingToken)
End While
End FunctionBu, sunucu tarafındaki uzun süreli görevler için genel bir örüntüdür.
Iron Software ile Cancellation Tokens Kullanımı için En İyi Uygulamalar
CancellationToken'i her zaman asenkron yöntemlere iletin.
Döngüler içinde ThrowIfCancellationRequested kullanın.
Sıkı döngüler yerine await Task.Delay kullanmayı tercih edin.
Token'ları LinkedTokenSource ile birleştirin.
Her zaman OperationCanceledException'u ele alın.
İptali, daha iyi kaynak yönetimi ve duyarlı uygulamalar için kullanın.
- C#'in nesne yönelimli bir programlama dili olduğunu unutmayın, dolayısıyla iptal yöntemini ve iptal mantığını düzgün bir şekilde tasarlayın.
Görev İptali için İleri Seviye Düşünceler
Bu .NET geliştiricileri için iyi bir makale sağlamak için, kalan ilgili terminolojiyi içeren ve en iyi uygulamaları pekiştiren kısa ek bir bölüm yer almaktadır.
C#'de görev iptali otomatik değildir; Sizin yöntem içinde uygulanan iptal mantığına bağlıdır. Belirteç özelliği kontrol edilmelidir ve tüketicilere döndürülen belirteç, onlara işlemin iptal edilip edilmediğini veya başarılı bir şekilde tamamlanıp tamamlanmadığını belirleme imkanı vermelidir. Bir istek tamamlanamazsa, sistem yine de uygun ve zamanda nazikçe sonlanmalıdır.
Bir kullanıcı arayüzü iptal düğmesini tetiklerse, CancellationTokenSource üzerindeki iptal metodu iptal sinyali verecektir ve kodunuz, token.IsCancellationRequested aracılığıyla periyodik olarak kontrol etmeli. İptal edilen işlem olayları meydana geldiğinde, kaynakları serbest bırakırsınız ve denetimi çağırana geri verirsiniz.
IronOCR taraması gibi uzun süren bir işlem, derinlemesine iç içe geçmiş belgeleri taramak veya IronXL devasa elektronik tablolar oluşturmak işlemi gibi her katmanda CancellationToken geçirilmeli. Kullanıcı sayfadan ayrıldığında, işlem temiz bir şekilde sonlanmalıdır.
Iron Software ürünleri, yerel .NET eşzamanlı programlama modelini takip ettikleri için bu durumu kolaylaştırır. Kendi kütüphanelerinizi yazarken, tüketicilerinizin işlemleri zamanında iptal edebilmesi, bellek sızıntısı veya yönetilmeyen kaynaklara tutunmaması için aynı en iyi uygulamaları takip etmeyi düşünün.
Sonuç
IronPDF, IronOCR, IronWord ve IronXL ile C# CancellationToken kullanmak, uygulamaları duyarlı, verimli ve sağlam tutan işbirlikçi bir iptal yaklaşımı sağlar. En iyi eşzamanlı programlama uygulamalarını uygulayarak, token'ları eşzamanlı görevlere geçirerek ve iptali periyodik olarak kontrol ederek, gerektiğinde zarif bir şekilde sonlanan daha hızlı, daha güvenli ve daha sürdürülebilir .NET uygulamaları oluşturabilirsiniz.
