DIE IRON SUITE VERWENDEN

Verwendung von C# CancellationToken mit Iron Software Bibliotheken

Moderne .NET-Entwickler arbeiten häufig mit asynchroner Programmierung, wenn sie Bibliotheken wie IronPDF, IronOCR, IronWord, und IronXL integrieren. Diese Produkte führen häufig langwierige Aufgaben aus, wie z. B. das Rendern von PDFs, die Verarbeitung von OCR-Inhalten oder die Generierung großer Tabellenkalkulationen, und der richtige Weg, um Anwendungen reaktionsfähig zu halten, ist die Verwendung von C# CancellationToken-basierter Stornierung.

In diesem Artikel wird erklärt, wie Abbruch-Token verwendet werden, wie eine Methode ein Token akzeptiert, wie der Abbruch von Aufgaben gehandhabt wird und wie diese Muster in angemessener und zeitgerechter Weise in Iron Software-Bibliotheken integriert werden können. Wir behandeln auch bewährte Verfahren, Ressourcenmanagement und die gleichzeitige Verwendung mehrerer CancellationTokens.

Warum Stornierungsanfragen bei Iron Software Workloads wichtig sind

IronSoftware

Die Tools von Iron Software führen häufig asynchrone Operationen aus - zum Beispiel:

Dabei kann es sich um lang laufende Vorgänge handeln, die ordnungsgemäß beendet werden müssen, wenn ein Benutzer auf eine Abbrechen-Schaltfläche klickt, wegnavigiert oder wenn der aufrufende Code eine CancellationRequest ausgibt.

Die Verwendung von Kündigungstoken gewährleistet dies:

  • Responsive Anwendungen

  • Bessere Ressourcenverwaltung

  • Kontrollierte Freigabe von nicht verwalteten Ressourcen

  • Ein sauberes kooperatives Stornierungsmodell

Grundlagen von C# CancellationToken verstehen

C# bietet die Klasse CancellationTokenSource, die ein CancellationToken-Token erzeugt. Ein CTS new CancellationTokenSource() kann ein Token erstellen, das an asynchrone Methoden übergeben wird.

var cts = new CancellationTokenSource();
CancellationToken token = cts.Token;
var cts = new CancellationTokenSource();
CancellationToken token = cts.Token;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ein Token wird über einen Methodenparameter weitergegeben:

public async Task ProcessPdfAsync(string html, CancellationToken token)
public async Task ProcessPdfAsync(string html, CancellationToken token)
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Innerhalb der Methode überprüfen Sie regelmäßig:

token.ThrowIfCancellationRequested();
token.ThrowIfCancellationRequested();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

oder prüfen Sie die Eigenschaft IsCancellationRequested:

if (token.IsCancellationRequested)
{
    Console.WriteLine("Cancellation requested.");
    return;
}
if (token.IsCancellationRequested)
{
    Console.WriteLine("Cancellation requested.");
    return;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dies bietet ein kooperatives Abbruchmuster, bei dem das Ereignis "Operation cancelled" nur dann eintritt, wenn Ihr Code das Token überprüft.

Verwendung von CancellationToken mit IronPDF

Das HTML-Rendering von IronPDF ist für die asynchrone Programmierung konzipiert, so dass Sie den Abbruch auf natürliche Weise integrieren können.

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);
    }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Beispiel Konsolenausgabe

Konsolenausgabe

Dies zeigt einen öffentlichen asynchronen Task, der den Abbruch an mehreren Stellen unterstützt. Wenn ein Abbruch erfolgt, löst die Methode eine OperationCanceledException aus, die Sie in einem Catch-Block behandeln.

Verwendung von CancellationToken mit IronOCR

IronOCRs langjähriger Betrieb zum Scannen von Bildern profitiert auch von einem internen CancellationToken:

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);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Beispielausgabe

Beispiel für die Verwendung von IronOCR mit CancellationTokens

Die IronWord-Dokumentenerstellung und die IronXL-Tabellenkalkulation funktionieren auf die gleiche Weise. Da es sich um abbrechbare Operationen handelt, vermeidet das kooperative Abbruchmuster das Blockieren von UI-Threads oder Hintergrunddiensten.

Periodische Prüfung auf Abbruch bei langen Operationen

Ein gängiges Muster ist die Schleife und die Überprüfung der Absage:

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
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dadurch wird sichergestellt, dass Stornierungsanfragen angemessen und rechtzeitig bearbeitet werden und das System keine Zyklen verschwendet.

Verwendung von CancellationToken mit HttpClient vor IronPDF Rendering

Wenn Sie eine Webanforderung ausführen, um HTML zu holen, bevor Sie eine PDF-Datei erzeugen, übergeben Sie immer das 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);
}
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);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dadurch wird sichergestellt, dass der HttpClient rechtzeitig abgebrochen wird, wenn der Benutzer wegnavigiert.

Abbruch in .NET Core Hintergrunddiensten

.NET Core Background Services enthalten einen internen CancellationToken, der automatisch an die ExecuteAsync-Methode übergeben wird. Verwenden Sie es, wenn Sie Iron Software Tools einsetzen:

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);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Dies ist das allgemeine Muster für serverseitige, langwierige Aufgaben.

Best Practices für die Verwendung von Cancellation Tokens mit Iron Software

  • Übergeben Sie immer CancellationToken in async-Methoden.

  • Verwenden Sie ThrowIfCancellationRequested innerhalb von Schleifen.

  • Bevorzugen Sie await Task.Delay anstelle von engen Schleifen.

  • Kombinieren Sie Token mit LinkedTokenSource.

  • OperationCanceledException immer behandeln.

  • Verwenden Sie Stornierung für bessere Ressourcenverwaltung und reaktionsschnelle Anwendungen.

  • Denken Sie daran, dass C# eine objektorientierte Programmiersprache ist, also entwerfen Sie Ihre Stornierungsmethode und Stornierungslogik sauber.

Erweiterte Überlegungen zur Aufgabenstornierung

Um sicherzustellen, dass dies ein guter Artikel für jeden .NET-Entwickler ist, gibt es hier einen kurzen ergänzenden Abschnitt, der die verbleibende relevante Terminologie einbezieht und gleichzeitig die besten Praktiken verstärkt.

Der Abbruch von Aufgaben in C# erfolgt nicht automatisch; es hängt von der in Ihrer Methode implementierten Abbruchlogik ab. Die Token-Eigenschaft muss überprüft werden, und das an die Verbraucher zurückgegebene Token sollte es ihnen ermöglichen festzustellen, ob der Vorgang abgebrochen oder erfolgreich abgeschlossen wurde. Wenn eine Anfrage nicht abgeschlossen werden kann, sollte das System dennoch rechtzeitig und auf angemessene Weise beendet werden.

Wenn eine Benutzeroberfläche eine Abbrechen-Schaltfläche auslöst, signalisiert die Abbrechen-Methode auf Ihrer CancellationTokenSource die Stornierung, und Ihr Code sollte regelmäßig über token.IsCancellationRequested überprüfen. Wenn die Operation abgebrochen wird, geben Sie Ressourcen frei und geben die Kontrolle an den Aufrufer zurück.

Ein langwieriger Vorgang wie das IronOCR-Scannen tief verschachtelter Dokumente oder das IronXL-Generieren umfangreicher Tabellenkalkulationen sollte das CancellationToken auf jeder Ebene weitergeben. Wenn der Benutzer die Seite verlässt, sollte der Vorgang sauber beendet werden.

Die Produkte von Iron Software erleichtern dies, da sie das asynchrone Programmiermodell von .NET nativ unterstützen. Wenn Sie Ihre eigenen Bibliotheken schreiben, sollten Sie dieselben Best Practices befolgen, damit Ihre Kunden Operationen rechtzeitig abbrechen können, ohne dass Speicher verloren geht oder nicht verwaltete Ressourcen zurückgehalten werden.

Abschluss

Die Verwendung von C# CancellationToken mit IronPDF, IronOCR, IronWord und IronXL bietet einen kooperativen Cancellation-Ansatz, der Anwendungen reaktionsschnell, effizient und robust hält. Durch die Anwendung von Best Practices in der asynchronen Programmierung, die Übergabe von Token an asynchrone Tasks und die regelmäßige Überprüfung auf Abbruch können Sie schnellere, sicherere und besser wartbare .NET-Anwendungen erstellen, die bei Bedarf ordnungsgemäß beendet werden.