IRONSOFTWAREHOME

.NET 용 Iron Suite

10개의 .NET 라이브러리. 완전한 문서 슈트

IRON SUITE 사용하기

.NET 10에서 HTML을 PDF로 변환하는 방법

Curtis Chau
Curtis Chau
Updated: 2026년 4월 21일

현대 .NET 개발자는 IronPDF, IronOCR, IronWord, IronXL 같은 라이브러리를 통합할 때 비동기 프로그래밍을 자주 사용합니다. 이 제품들은 종종 PDF 렌더링, OCR 내용 처리, 대형 스프레드시트 생성과 같은 장시간 실행 작업을 수행하며, 올바른 응용 프로그램 응답 유지 방법은 C# CancellationToken 기반의 취소를 사용하는 것입니다.

이 글은 취소 토큰을 사용하는 방법, 메서드가 토큰을 받는 방법, 작업 취소를 처리하는 방법, 이 패턴을 Iron Software 라이브러리와 적절하고 시기 적절하게 통합하는 방법을 설명합니다. 또한 모범 사례, 리소스 관리, 여러 CancellationTokens를 동시에 사용하는 방법에 대해 다룹니다.

Iron Software 작업 로드에서 취소 요청이 중요한 이유

Iron Software

Iron Software 도구는 종종 비동기 작업을 실행합니다 - 예를 들어:

이것들은 사용자가 취소 버튼을 클릭하거나, 다른 곳으로 이동하거나, 호출 코드가 CancellationRequest를 발행할 때 정상적으로 종료되어야 하는 장시간 실행 작업일 수 있습니다.

취소 토큰을 사용하여 보장됩니다:

  • 반응형 애플리케이션
  • 더 나은 리소스 관리
  • 비관리 리소스의 제어된 해제
  • 깨끗한 협력적 취소 모델

C# CancellationToken 기본 이해

C#은 CancellationToken 토큰을 생성하는 CancellationTokenSource 클래스를 제공합니다. CTS new CancellationTokenSource()는 비동기 메서드에 전달되는 토큰을 생성할 수 있습니다.

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

토큰은 메서드 매개변수를 사용하여 전달됩니다:

public async Task ProcessPdfAsync(string html, CancellationToken token)

메서드 내부에서 주기적으로 확인하세요:

token.ThrowIfCancellationRequested();

또는 IsCancellationRequested 속성을 검사하세요:

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

이는 작업이 취소된 이벤트가 코드가 토큰을 확인할 때만 발생하는 협동 취소 패턴을 제공합니다.

IronPDF에서 CancellationToken 사용

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

콘솔 출력 예제

콘솔 출력

이는 여러 지점에서 취소를 지원하는 공개 async Task를 보여줍니다. 취소가 발생하면 메서드는 OperationCanceledException을 던지고 이는 catch 블록에서 처리합니다.

IronOCR에서 CancellationToken 사용

IronOCR의 이미지 스캔이라는 장시간 실행 작업도 내부 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);
    }
}

출력 예제

IronOCR를 CancellationTokens와 함께 사용하는 예시

IronWord 문서 생성과 IronXL 스프레드시트 조립이 동일한 방식으로 작용합니다. 이들은 모두 취소 가능한 작업이기 때문에, 협력적 취소 패턴은 UI 스레드나 백그라운드 서비스 차단을 피합니다.

긴 작업에서 취소를 주기적으로 확인하기

일반적인 패턴은 반복하여 취소를 확인하는 것입니다:

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

이것은 취소 요청을 적절하고 시기적절한 방식으로 처리하며 시스템이 사이클을 낭비하지 않도록 보장합니다.

IronPDF 렌더링 전에 HttpClient와 함께 CancellationToken 사용하기

PDF를 생성하기 전에 HTML을 가져오기 위한 웹 요청을 수행할 때 항상 토큰을 전달하십시오:

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

이것은 사용자가 이동할 경우 HttpClient가 시기적절하게 취소되도록 보장합니다.

.NET Core 백그라운드 서비스의 취소

.NET Core 백그라운드 서비스는 ExecuteAsync 메소드에 자동으로 전달되는 내부 CancellationToken을 포함합니다. Iron Software 도구를 실행할 때 사용하십시오:

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

이것은 서버 측 장기 실행 작업의 일반적인 패턴입니다.

Iron Software와 함께 취소 토큰을 사용하는 모범 사례

  • 항상 비동기 메소드에 CancellationToken을 전달하십시오.

  • 반복문 내에서 ThrowIfCancellationRequested를 사용하십시오.

  • 빡빡한 루프 대신 await Task.Delay를 선호하십시오.

  • LinkedTokenSource로 토큰을 결합하십시오.

  • 항상 OperationCanceledException을 처리하십시오.

  • 더 나은 자원 관리와 반응성 있는 응용 프로그램을 위해 취소를 사용하십시오.

  • C#이 객체 지향 프로그래밍 언어임을 기억하고 취소 메소드와 취소 로직을 깔끔하게 설계하십시오.

작업 취소에 대한 고급 고려사항

이것이 모든 .NET 개발자에게 좋은 기사임을 보장하기 위해, 남은 관련 용어를 통합하고 모범 사례를 강화하는 간단한 보충 섹션이 있습니다.

C#의 작업 취소는 자동이 아닙니다; 귀하의 메소드 내부에 구현된 취소 로직에 따라 다릅니다. 토큰 속성을 확인해야 하며, 소비자에게 반환된 토큰은 작업이 취소되었는지 또는 성공적으로 완료되었는지를 결정할 수 있도록 해야 합니다. 요청을 완료할 수 없는 경우에도 시스템은 여전히 적절하고 시기적절한 방식으로 우아하게 종료되어야 합니다.

사용자 인터페이스가 취소 버튼을 트리거하면 CancellationTokenSource의 취소 메소드가 취소를 신호하고 코드가 주기적으로 token.IsCancellationRequested를 확인해야 합니다. 작업 취소된 이벤트가 발생하면 자원을 해제하고 호출자에게 제어를 반환합니다.

깊이 중첩된 문서를 IronOCR로 스캔하거나 대형 스프레드시트를 IronXL로 생성하는 것 같은 장시간 실행 작업은 CancellationToken을 모든 레이어에 전달해야 합니다. 사용자가 페이지에서 이동할 때, 작업은 깔끔하게 종료되어야 합니다.

Iron Software 제품은 .NET 비동기 프로그래밍 모델을 기본적으로 따르기 때문에 이를 더 쉽게 만듭니다. 자체 라이브러리를 작성할 때, 소비자가 메모리를 누출시키거나 관리되지 않는 자원을 고수하지 않고 시기 적절하게 작업을 취소할 수 있도록 동일한 모범 사례를 따르는 것을 고려하십시오.

결론

C# CancellationToken을 IronPDF, IronOCR, IronWord, IronXL과 함께 사용하면 응용 프로그램을 응답성 있게 유지하는 협력적 취소 접근 방식을 제공합니다. 비동기 프로그래밍의 모범 사례를 적용하고, 토큰을 비동기 작업에 전달하며, 주기적으로 취소를 확인함으로써, 더 빠르고 안전하며 유지 보수 가능한 .NET 응용 프로그램을 구축할 수 있으며, 필요시 정상적으로 종료됩니다.

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

OR
bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.