Zum Fußzeileninhalt springen
.NET HILFE

C# CancellationToken (Wie es für Entwickler funktioniert)

In der modernen Softwareentwicklung ist das effiziente Verwalten von lang andauernden Aufgaben besonders entscheidend, insbesondere in Anwendungen, in denen das Erzeugen großer oder komplexer PDF-Dateien üblich ist. C#-Entwickler verlassen sich oft auf IronPDF für nahtlose PDF-Erstellung, aber das Handhaben potenziell langer Aufgaben zur PDF-Erstellung erfordert eine Möglichkeit, Benutzereingriffe oder -abbrüche zu verwalten.

Hier kommt der CancellationToken in C# ins Spiel. Durch Integration mit IronPDF können Sie sicherstellen, dass Ihre PDF-Erstellungsaufgaben sowohl reaktionsfähig als auch effizient sind. In diesem Artikel werden wir die Bedeutung von CancellationToken erkunden, warum es gut zu IronPDF passt und wie Sie es implementieren können, um Aufgaben elegant abzubrechen.

Was ist ein CancellationToken in C#?

Der CancellationToken ist ein grundlegender Bestandteil der asynchronen Programmierung in C#. Er erlaubt Ihnen, zu signalisieren, dass eine Aufgabe abgebrochen werden soll, was den Entwicklern eine bessere Kontrolle über langwierige Vorgänge gibt. Dies kann besonders hilfreich sein, wenn Aufgaben wie das Erstellen von Berichten oder Rechnungen durchgeführt werden, bei denen Sie möglicherweise kontinuierlich dynamische Berichte aus Daten generieren möchten, bis Sie Ihre Zielmenge erreicht haben. Zu diesem Zeitpunkt können Sie C#-Abbruchtoken verwenden, um anzuzeigen, dass der Vorgang abgebrochen werden soll, wodurch das Programm elegant beendet wird.

Wie funktioniert es?

Im Wesentlichen wird ein CancellationToken an eine Aufgabe oder Methode übergeben, die regelmäßig überprüft, ob ein Abbruch angefordert wurde. Wenn ja, kann die Aufgabe elegant beendet werden, wodurch Ressourcen freigegeben und die Reaktionsfähigkeit Ihrer Anwendung verbessert wird. Dies ist besonders nützlich bei der PDF-Erstellung, bei der komplexe Dokumente Zeit zur Erstellung benötigen könnten.

Durch die Verwendung von CancellationTokens vermeiden Sie die potenziellen Nachteile von Aufgaben, die unnötig lange laufen, wie beispielsweise verschwendete Systemressourcen und eine schlechte Benutzererfahrung.

Interne Storno-Token

In C# bezieht sich ein internes Abbruch-Token auf ein Abbruch-Token, welches innerhalb einer bestimmten Klasse oder Methode erstellt und verwaltet wird, anstatt von einer externen Quelle übergeben zu werden. Dies ermöglicht eine feinere Kontrolle über den Abbruch von Aufgaben im Rahmen einer einzelnen Komponente, wodurch es auf Abbruchanforderungen reagieren kann, die intern entstehen.

Ein internes Abbruch-Token zu verwenden, ist besonders nützlich in Szenarien, in denen Sie die Abbruchlogik kapseln möchten, ohne sie den Nutzern Ihrer Klasse auszusetzen, wodurch eine saubere Schnittstelle erhalten bleibt. Dieser Ansatz kann die Modularität des Codes verbessern und es einfacher machen, komplexe asynchrone Arbeitsabläufe zu verwalten, während die Flexibilität des breiteren CancellationToken-Rahmens genutzt wird.

Warum ein Cancellation Token mit IronPDF verwenden?

Bei der PDF-Erzeugung, insbesondere in Webanwendungen oder komplexen Berichtssystemen, könnten Sie auf Situationen stoßen, in denen ein Benutzer eine Aufgabe initiiert, wie das Erstellen einer großen PDF-Datei, diese aber dann verlässt oder das Ergebnis nicht mehr benötigt. In solchen Fällen möchten Sie die Option haben, den Prozess der PDF-Erstellung abzubrechen, um unnötige Last auf dem Server oder der UI zu vermeiden.

Deshalb ist die Verwendung von CancellationToken mit IronPDF entscheidend:

1. Unnötige Last verhindern

Wenn ein Benutzer das angeforderte PDF nicht mehr benötigt, gibt es keinen Grund, den Prozess fortzusetzen. Durch die Nutzung von CancellationToken können Sie die PDF-Erstellungsaufgabe stoppen, wodurch übermäßige Belastungen Ihrer Server und eine Verbesserung der Gesamtleistung der Anwendung vermieden werden.

2. Verbesserung der Benutzerfreundlichkeit

In Desktop-Anwendungen kann die PDF-Erstellung im UI-Thread erfolgen, was die Benutzeroberfläche blockieren könnte, wenn die Aufgabe lange andauert. Durch die Einbindung von CancellationToken können Benutzer die Aufgabe abbrechen und die Anwendung reaktionsfähig halten.

3. Verbesserung der Skalierbarkeit

In Webanwendungen, in denen zahlreiche Benutzer gleichzeitig PDFs erstellen, ist Skalierbarkeit entscheidend. CancellationToken ermöglicht es Ihnen, unnötige Aufgaben sicher abzubrechen, wodurch Ressourcen freigesetzt werden, um andere Anfragen effizient zu bearbeiten.

Wie man CancellationToken mit IronPDF implementiert

Nun, da wir verstehen, warum CancellationToken nützlich ist, schauen wir uns an, wie man es mit IronPDF implementiert.

Schritt 1: Einrichten von IronPDF in Ihrem Projekt

Um IronPDF zu verwenden, müssen Sie es zuerst installieren. Wenn es bereits installiert ist, können Sie zum nächsten Abschnitt übergehen; Andernfalls behandeln die folgenden Schritte die Installation der IronPDF-Bibliothek.

Über die NuGet Package Manager Console

Um IronPDF über die NuGet-Paketmanager-Konsole zu installieren, öffnen Sie Visual Studio und navigieren Sie zur Paketmanager-Konsole. Führen Sie dann den folgenden Befehl aus:

Install-Package IronPdf

Über den NuGet-Paket-Manager für die Lösung

Öffnen Sie Visual Studio, gehen Sie zu "Tools -> NuGet-Paket-Manager -> Verwalten von NuGet-Paketen für die Lösung" und suchen Sie nach IronPDF. Von hier aus müssen Sie nur Ihr Projekt auswählen und auf "Installieren" klicken, und IronPDF wird zu Ihrem Projekt hinzugefügt.

Sobald Sie IronPDF installiert haben, müssen Sie nur noch die richtige using-Anweisung zu Beginn Ihres Codes hinzufügen, um IronPDF verwenden zu können:

using IronPdf;
using IronPdf;
$vbLabelText   $csharpLabel

Schritt 2: Verwendung von Storno-Token in einer asynchronen PDF-Generierungsmethode

Lassen Sie uns in die eigentliche Implementierung eintauchen. In diesem Beispiel werden wir ein einfaches PDF aus HTML erstellen, indem wir IronPDF verwenden, jedoch mit einem CancellationToken, das erlaubt, die Aufgabe bei Bedarf abzubrechen.

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.");
    }
}
$vbLabelText   $csharpLabel

Konsolenausgabe

C#-Abbruch-Token (wie es für Entwickler funktioniert): Abbildung 2 - Konsolenausgabe

PDF-Ausgabe

C#-Abbruch-Token (wie es für Entwickler funktioniert): Abbildung 3 - PDF-Ausgabe

In diesem Beispiel demonstrieren wir, wie man ein CancellationToken in einem C#-Programm verwendet, um eine lang andauernde PDF-Erstellung mit IronPDF abzubrechen. Der Code ist in zwei Teile gegliedert: den PDF-Erstellungsprozess (Klasse PdfGenerator) und die Hauptprogrammlogik (Klasse Program).

  • Klasse PdfGenerator: Diese Klasse enthält eine Methode, die das Erzeugen einer PDF-Datei simuliert und die Unterstützung des Abbruchs mittels eines CancellationToken unterstützt.
  • Wir erstellen unsere Abbruch-Token-Quelle in der main-Methode mithilfe von CancellationTokenSource() und erstellen dann unser Token-Objekt, indem wir die Eigenschaft Token der CancellationTokenSource an das Objekt übergeben.
  • ChromePdfRenderer wird aus der IronPDF-Bibliothek verwendet, um HTML-Inhalte in ein PDF-Dokument zu rendern.
  • Die Methode GeneratePdfWithCancellation ist asynchron (async) und gibt eine Aufgabe zurück. Diese Methode akzeptiert ein CancellationToken (token), um den Abbruch der Aufgabe durch die Abbruchanforderung zu handhaben.
  • Das CancellationToken erlaubt uns, lang andauernde Operationen sicher abzubrechen. Der Abbruch ist jedoch kooperativ, was bedeutet, dass die Aufgabe selbst regelmäßig den Token-Status überprüfen muss.
  • In diesem Code simulieren wir eine lange Aufgabe mit regelmäßigen Abbruchüberprüfungen. Der wichtigste Punkt ist, dass wir manuell auf Abbruch überprüfen (token.IsCancellationRequested) während des PDF-Erstellungsprozesses, um bereit zu sein, die Abbruchmethode auszuführen, wenn das Token an sie übergeben wird.
  • Wenn der Benutzer eine Taste drückt, um den Abbruch des Programms zu signalisieren, stoppt die Aufgabe elegant und wirft eine OperationCanceledException, wodurch das vollständige Generieren der PDF-Datei auf angemessene und rechtzeitige Weise verhindert wird.
  • Das resultierende PDF wird als "output.pdf" gespeichert, falls kein Abbruch erfolgt ist, um zu verhindern, dass das Programm den vollständigen Aufgabenprozess ausführt.

Real-World Use Cases von IronPDF mit CancellationToken

Es gibt mehrere praktische Situationen, in denen die Verwendung eines oder mehrerer Abbruch-Token mit IronPDF die Leistung Ihrer Anwendung und das Benutzererlebnis verbessern kann. Hier sind einige Beispiele:

1. Webanwendungen

In einer Webanwendung initiieren Benutzer häufig Aktionen wie das Erstellen von Berichten im PDF-Format. Wenn der Benutzer jedoch die Seite verlässt oder den Browser schließt, kann das System dies erkennen und CancellationToken nutzen, um den PDF-Erstellungsprozess zu stoppen.

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

Diese einfache Implementierung ermöglicht es Webservern, effektiver zu skalieren, indem sie keine Ressourcen für Aufgaben widmen, die nicht mehr benötigt werden.

2. Langlaufende Berichte

In Berichtsanwendungen könnten Benutzer große Datensätze zum Exportieren als PDF anfordern. Wenn der Benutzer seine Meinung ändert oder eine falsche Anfrage stellt, ermöglicht CancellationToken Ihnen, die Aufgabe auf halbem Weg abzubrechen, um Ressourcenverschwendung zu verhindern.

3. Hintergrunddienste

In Hintergrunddiensten oder Microservices können Aufgaben, die einen erheblichen Zeitaufwand erfordern, wie die Generierung großer PDF-Batches, effizienter verwaltet werden, indem CancellationToken verwendet wird. Wenn der Dienst heruntergefahren oder das System verkleinert werden soll, können Aufgaben, die gerade in Bearbeitung sind, sauber abgebrochen werden, um sicherzustellen, dass keine Daten verloren gehen oder beschädigt werden.

Abschluss

Nun, da wir das Ende der heutigen Diskussion über die Verwendung von Abbruch-Token mit IronPDF erreicht haben, können Sie diese wie ein Profi in Ihre PDF-Projekte implementieren! Die Verwendung von C# CancellationToken mit IronPDF ermöglicht es Ihnen, effizientere und reaktionsfähigere Anwendungen zu erstellen, die Aufgaben zur PDF-Erstellung elegant handhaben. Dieser Ansatz ermöglicht ein kooperatives Abbruchmodell, das es Aufgaben erlaubt, während der Ausführung an sicheren Punkten auf Abbruchanforderungen zu prüfen, anstatt abrupt beendet zu werden.

Unabhängig davon, ob Sie lang andauernde Berichte verwalten, on-Demand PDF-Erstellung in Webanwendungen durchführen oder Hintergrunddienste einsetzen, sorgt die Einbeziehung eines CancellationToken oder mehrerer gleichzeitig dafür, dass unnötige Aufgaben abgebrochen werden können, wodurch Ressourcenverschwendung verhindert und das Benutzererlebnis verbessert wird.

Mit nur wenigen Codezeilen können Sie die Skalierbarkeit und Reaktionsfähigkeit Ihrer Anwendung verbessern und den Benutzern mehr Kontrolle über ihre Aktionen bieten. Wenn Sie IronPDF noch nicht erkundet haben, ist jetzt der perfekte Zeitpunkt, um die kostenlose Testversion auszuprobieren und herauszufinden, wie seine leistungsstarken PDF-Erstellungsmöglichkeiten Ihre C#-Projekte transformieren können.

Häufig gestellte Fragen

Wie kann ich ein CancellationToken verwenden, um lang andauernde Aufgaben in C# zu verwalten?

Sie können ein CancellationToken in Ihre lang andauernden Aufgaben integrieren, indem Sie es an die Aufgabe übergeben und regelmäßig prüfen, ob eine Stornierung angefordert wurde. Dies ermöglicht die ordnungsgemäße Beendigung von Aufgaben, die Ressourcen freigibt und die Anwendungsreaktionsfähigkeit aufrechterhält.

Warum ist ein CancellationToken in der PDF-Erstellung wichtig?

In der PDF-Erstellung hilft ein CancellationToken, Ressourcen effizient zu verwalten, indem es ermöglicht, Aufgaben zu stornieren, wenn sie nicht mehr erforderlich sind, beispielsweise wenn ein Benutzer die Seite wechselt. Dies verhindert übermäßige Serverbelastung und verbessert die Benutzererfahrung.

Wie implementiere ich ein CancellationToken in einer C# PDF-Erstellungsaufgabe?

Um ein CancellationToken in einer C# PDF-Erstellungsaufgabe zu implementieren, übergeben Sie das Token an Ihre Methode und prüfen regelmäßig auf Stornierungsanfragen während der Ausführung. Wenn eine Stornierung erkannt wird, können Sie die Aufgabe ordnungsgemäß beenden.

Was ist der Zweck der Verwendung von asynchronen Methoden mit CancellationToken in der PDF-Erstellung?

Die Verwendung von asynchronen Methoden mit einem CancellationToken in der PDF-Erstellung ermöglicht es Aufgaben, asynchron zu laufen, wodurch die Reaktionsfähigkeit der Anwendung verbessert wird und es möglich wird, Aufgaben zu stornieren, wenn sie nicht mehr benötigt werden.

Wie verbessert ein CancellationToken die Benutzererfahrung in Webanwendungen?

Durch die Nutzung eines CancellationToken können Webanwendungen Aufgaben wie die PDF-Erstellung stornieren, wenn ein Benutzer weg navigiert, unnötige Verarbeitung vermeiden und die Anwendungsreaktionsfähigkeit aufrechterhalten, was die Benutzererfahrung verbessert.

Welche Rolle spielt ChromePdfRenderer in der asynchronen PDF-Erstellung?

ChromePdfRenderer von IronPDF wird verwendet, um HTML-Inhalt in ein PDF-Dokument zu konvertieren. Es unterstützt asynchrone Operationen, sodass Sie ein CancellationToken verwenden können, um den Lebenszyklus und die Reaktionsfähigkeit der Aufgabe effektiv zu verwalten.

Was kann passieren, wenn während der PDF-Erstellung eine Stornierungsanforderung gestellt wird?

Wenn während der PDF-Erstellung eine Stornierungsanforderung gestellt wird, überprüft die Aufgabe den Status des CancellationToken. Bei Erkennung einer Stornierung wird eine OperationCanceledException ausgelöst, wodurch der Prozess gestoppt wird, um Ressourcen zu sparen.

Wie verbessert CancellationToken die Skalierbarkeit von Anwendungen?

CancellationToken verbessert die Skalierbarkeit, indem Anwendungen ermöglicht wird, unnötige Aufgaben zu stornieren, wie beispielsweise bei der PDF-Erstellung, wodurch der Ressourcenverbrauch reduziert und die Gesamtleistung der Anwendung verbessert wird.

Welche Vorteile bringt die Verwendung eines CancellationToken in Hintergrunddiensten?

In Hintergrunddiensten ermöglicht die Verwendung eines CancellationToken das Management von lang andauernden Aufgaben, wie der Stapel-PDF-Verarbeitung, indem Aufgaben bei Dienstabschaltung oder während der Skalierung der Operationen sauber storniert werden können.

Wie verbessert die Integration von CancellationToken mit IronPDF die Effizienz der Anwendung?

Die Integration von CancellationToken mit IronPDF ermöglicht ein besseres Ressourcenmanagement, indem unnötige PDF-Erstellungsaufgaben storniert werden, was die Effizienz und Reaktionsfähigkeit der Anwendung verbessert, während die Serverbelastung reduziert wird.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der führend in der C# PDF-Technologie ist. Als ursprünglicher Entwickler der Iron Software-Kerncodebasis hat er die Produktarchitektur des Unternehmens seit seiner Gründung gestaltet und zusammen mit CEO Cameron Rimington in ein Unternehmen ...

Weiterlesen