IRONSOFTWAREHOME

Iron Suite for .NET

10 bibliotek .NET. Jeden kompletny pakiet dokumentów.

IRONPDF
IRONWORD
IRONXL
IRONPPT
IRONOCR
IRONBARCODE
IRONQR
IRONPRINT
IRONZIP
IRONWEBSCRAPER
UŻYWANIE IRON SUITE

Używanie C# CancellationToken z bibliotekami Iron Software

Curtis Chau
Curtis Chau
Updated: 21 kwietnia 2026

Współcześni deweloperzy .NET często pracują z programowaniem asynchronicznym podczas integracji bibliotek takich jak IronPDF, IronOCR, IronWord oraz IronXL. Te produkty często wykonują długotrwałe zadania—takie jak renderowanie PDF, przetwarzanie zawartości OCR, czy generowanie dużych arkuszy kalkulacyjnych—i poprawnym sposobem utrzymania responsywności aplikacji jest użycie opartej na C# CancellationToken anulacji.

Ten artykuł wyjaśnia, jak używać tokenów anulowania, jak metoda akceptuje token, jak obsługiwać anulowanie zadania oraz jak zintegrować te wzorce z bibliotekami Iron Software w odpowiedni i terminowy sposób. Omówimy również najlepsze praktyki, zarządzanie zasobami oraz jak używać wielu CancellationTokens jednocześnie.

Dlaczego prośby o anulację mają znaczenie w obciążeniach Iron Software

Iron Software

Narzędzia Iron Software często wykonują operacje asynchroniczne - na przykład:

Są to operacje długotrwałe, które muszą być elegancko zakończone, gdy użytkownik kliknie przycisk Anuluj, opuści stronę lub gdy wywołujący kod wydaje żądanie anulowania.

Użycie tokenów anulowania zapewnia:

  • Responsywne aplikacje
  • Lepsze zarządzanie zasobami
  • Kontrolowane zwalnianie zasobów nieskładowanych
  • Czysty model współpracującego anulowania

Podstawy C# CancellationToken

Język C# udostępnia klasę CancellationTokenSource, która tworzy token CancellationToken. Nowa metoda CTS CancellationTokenSource() może utworzyć token, który jest przekazywany do metod asynchronicznych.

var cts = new CancellationTokenSource();
CancellationToken token = cts.Token;

Token jest przekazywany za pomocą parametru metody:

public async Task ProcessPdfAsync(string html, CancellationToken token)

W ramach tej metody należy okresowo sprawdzać:

token.ThrowIfCancellationRequested();

lub sprawdzić właściwość IsCancellationRequested:

if (token.IsCancellationRequested)
{
    Console.WriteLine("Cancellation requested.");
    return;
}

Zapewnia to wzorzec kooperacyjnej anulacji, gdzie zdarzenie anulacji operacji występuje tylko wtedy, gdy twój kod sprawdza token.

Korzystanie z CancellationToken w IronPDF

Renderowanie HTML w IronPDF jest zaprojektowane do programowania asynchronicznego, więc możesz naturalnie zintegrować anulowanie.

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);
    }

Przykładowy wynik konsoli

Wyjście konsoli

Poniżej przedstawiono publiczną klasę async Task, która obsługuje anulowanie w wielu punktach. W przypadku anulowania metoda zgłasza wyjątek OperationCanceledException, który należy obsłużyć w bloku catch.

Korzystanie z CancellationToken w IronOCR

Długotrwała operacja skanowania obrazów w IronOCR także korzysta z wewnętrznego 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);
    }
}

Przykładowy wynik

Przykładowe użycie IronOCR z CancellationTokens

Generowanie dokumentów w IronWord i tworzenie arkuszy kalkulacyjnych w IronXL działa w ten sam sposób. Ponieważ wszystkie te operacje można anulować, wzorzec kooperacyjnego anulowania pozwala uniknąć blokowania wątków interfejsu użytkownika lub usług działających w tle.

Okresowe sprawdzanie, czy długotrwałe operacje nie zostały anulowane

Typowym wzorcem jest pętla i sprawdzanie anulowania:

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
    }
}

Dzięki temu wnioski o anulowanie są rozpatrywane w odpowiedni i terminowy sposób, a system nie marnuje zasobów.

Korzystanie z CancellationToken w HttpClient przed renderowaniem w IronPDF

Podczas wysyłania żądania sieciowego w celu pobrania kodu HTML przed wygenerowaniem pliku PDF należy zawsze przekazać 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);
}

Dzięki temu, jeśli użytkownik opuści stronę, HttpClient zostanie anulowany w odpowiednim czasie.

Anulowanie w usługach działających w tle .NET Core

Usługi działające w tle .NET Core zawierają wewnętrzny token CancellationToken, który jest automatycznie przekazywany do metody ExecuteAsync. Używaj go podczas korzystania z narzędzi Iron Software:

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
    while (!stoppingToken.IsCancellationRequested)
    {
        await ProcessPdfAsync("<h1>Hello</h1>", stoppingToken);
        await Task.Delay(5000, stoppingToken);
    }
}

Jest to ogólny wzorzec dla długotrwałych zadań po stronie serwera.

Najlepsze praktyki dotyczące korzystania z tokenów anulowania w oprogramowaniu Iron Software

  • Zawsze przekazuj CancellationToken do metod asynchronicznych.

  • Używaj ThrowIfCancellationRequested wewnątrz pętli.

  • Zamiast ciasnych pętli zaleca się stosowanie await Task.Delay.

  • Połącz tokeny z LinkedTokenSource.

  • Zawsze należy obsługiwać wyjątek OperationCanceledException.

  • Wykorzystaj funkcję anulowania, aby zapewnić lepsze zarządzanie zasobami i responsywność aplikacji.

  • Pamiętaj, że C# jest językiem programowania obiektowego, więc zaprojektuj swoją metodę anulowania i logikę anulowania w przejrzysty sposób.

Zaawansowane kwestie dotyczące anulowania zadania

Aby zapewnić, że jest to dobry artykuł dla każdego programisty .NET, poniżej znajduje się krótka sekcja uzupełniająca, która zawiera pozostałą istotną terminologię, jednocześnie podkreślając najlepsze praktyki.

Anulowanie zadania w języku C# nie następuje automatycznie; To zależy od logiki anulowania zaimplementowanej w Twojej metodzie. Należy sprawdzić właściwość tokenu, a token zwracany konsumentom powinien umożliwiać im ustalenie, czy operacja została anulowana, czy pomyślnie zakończona. Jeśli żądanie nie może zostać zakończone, system powinien mimo to zakończyć działanie w odpowiedni i terminowy sposób.

Jeśli interfejs użytkownika uruchomi przycisk anulowania, metoda cancel w CancellationTokenSource zasygnalizuje anulowanie, a kod powinien okresowo sprawdzać to za pomocą token.IsCancellationRequested. Gdy zdarzenia anulacji operacji występują, uwalniasz zasoby i zwracasz kontrolę do wywołującego.

Długotrwała operacja, taka jak skanowanie IronOCR głęboko zagnieżdżonych dokumentów czy generowanie IronXL masywnych arkuszy kalkulacyjnych, powinna przekazywać CancellationToken przez każdą warstwę. Gdy użytkownik opuści stronę, operacja powinna zakończyć się poprawnie.

Produkty Iron Software ułatwiają to zadanie, ponieważ natywnie obsługują model programowania asynchronicznego .NET. Tworząc własne biblioteki, warto stosować te same najlepsze praktyki, aby użytkownicy mogli w odpowiednim czasie anulować operacje bez utraty pamięci lub zatrzymywania zasobów niezarządzanych.

Wnioski

Używanie C# CancellationToken z IronPDF, IronOCR, IronWord i IronXL dostarcza kooperacyjne podejście do anulacji, które utrzymuje aplikacje responsywne, wydajne i solidne. Stosując najlepsze praktyki w programowaniu asynchronicznym, przekazując tokeny do zadań asynchronicznych i okresowo sprawdzając anulację, można tworzyć szybsze, bezpieczniejsze i bardziej łatwe do utrzymania aplikacje .NET, które elegancko kończą działanie w razie potrzeby.

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta