IRONSOFTWAREHOME
ATUALIZAÇÕES DO DESENVOLVEDOR

BackgroundWorker em C# (Como funciona para desenvolvedores)

Curtis Chau
Curtis Chau
Updated: 21 de abril de 2026

Gerar PDFs com o IronPDF é uma tarefa comum para desenvolvedores .NET , especialmente na criação de relatórios dinâmicos, faturas ou sistemas de automação de documentos. Mas se você já gerou um PDF na thread principal da interface do usuário em um aplicativo Windows Forms ou WPF, provavelmente já viu a interface congelar ou parar de responder. Isso é especialmente comum ao renderizar conteúdo HTML extenso ou processar layouts de PDF complexos.

É aí que entra a classe BackgroundWorker do C#. Este artigo explica como integrar o IronPDF com o BackgroundWorker para lidar com operações assíncronas em um aplicativo de desktop sem bloquear a interface do usuário.

Por que usar BackgroundWorker com IronPDF?

Mantenha sua interface de usuário responsiva.

Ao executar tarefas que exigem muito da CPU ou que demandam muitas operações de E/S, como a geração de PDFs, na thread principal, a interface do usuário trava. Os usuários não podem clicar, arrastar ou interagir com o aplicativo enquanto ele estiver em uso. Ao usar um objeto BackgroundWorker, você pode mover o trabalho para uma thread separada, mantendo sua interface ágil e utilizável durante o processamento em segundo plano.

Ideal para geração de relatórios e tarefas de longa duração.

Se o seu aplicativo envolve exportação de dados, conversão de HTML para PDF ou renderização de relatórios detalhados, delegar essas tarefas a um processo em segundo plano torna seu aplicativo mais profissional e eficiente.

Compatível com aplicativos WinForms legados

Embora os aplicativos modernos frequentemente usem async/await, muitos projetos mais antigos ainda se beneficiam do BackgroundWorker devido à sua simplicidade e suporte em tempo de design no Visual Studio.

O que é o IronPDF?

C# BackgroundWorker (Como Funciona para Desenvolvedores): Figura 1 - IronPDF

IronPDF é uma poderosa biblioteca .NET projetada para gerar, editar e trabalhar com documentos PDF em C#. Ele utiliza um navegador Chromium sem interface gráfica, permitindo que os desenvolvedores convertam HTML, CSS, JavaScript e até mesmo páginas da web complexas em PDFs precisos e com qualidade de impressão. Diferentemente dos geradores de PDF tradicionais, o IronPDF renderiza documentos exatamente como eles apareceriam em um navegador — combinando layout, fontes, imagens e estilos pixel por pixel.

Principais características

  • Conversão de HTML para PDF – Converta strings HTML, URLs ou páginas web completas em PDFs.
  • Renderização de imagens e texto – Adicione cabeçalhos, rodapés, marcas d'água e imagens programaticamente.
  • Fusão e divisão de PDFs – Combine vários documentos ou extraia páginas específicas.
  • Preenchimento de formulários e anotações – Trabalhe com formulários PDF interativos.
  • Sem dependências externas – Funciona sem a necessidade de instalar o Adobe Acrobat ou o Microsoft Office.

O IronPDF é compatível com .NET Framework, .NET Core e .NET 6/7+, sendo ideal tanto para aplicações .NET para desktop quanto para aplicações web.

Instalando o IronPDF via NuGet

Para começar, instale o IronPDF em seu projeto usando o Gerenciador de Pacotes NuGet :

PM > Install-Package IronPdf

Isso adicionará todas as referências necessárias para que você possa começar a usar o ChromePdfRenderer, o HtmlToPdf e outros recursos avançados do IronPDF.

Neste exemplo, usaremos um aplicativo Windows Forms criado com o Visual Studio, com um botão que inicia a geração de PDF e um rótulo para indicar quando o processo estiver concluído.

Implementando BackgroundWorker para IronPDF

Agora, usaremos os seguintes exemplos de código para detalhar o processo de utilização do BackgroundWorker de forma estruturada e segura:

Etapa 1 – Defina o BackgroundWorker

Você pode criar e configurar um BackgroundWorker tanto no designer quanto no código. Eis a abordagem em código:

private void SetupBackgroundWorker()
{
    // new backgroundworker worker instance
    worker = new BackgroundWorker(); // dowork event handler
    worker.DoWork += PdfWorker_DoWork;
    worker.RunWorkerCompleted += PdfWorker_RunWorkerCompleted; // final result handler
}

Isso inicializa o processo de trabalho e configura os eventos necessários para a execução e conclusão em segundo plano.

Etapa 2 – Lidar com o evento DoWork

O método DoWork é executado em uma thread diferente, realizando a operação em segundo plano (geração do PDF):

private void PdfWorker_DoWork(object sender, DoWorkEventArgs e)
{
    var Renderer = new ChromePdfRenderer();
    // Simulate input from UI or parameters
    string htmlContent = "<h1>Monthly Report</h1><p>Generated with IronPDF.</p>";
    string outputPath = Path.Combine(Environment.CurrentDirectory, "Report.pdf");
    // Generate PDF
    var pdf = Renderer.RenderHtmlAsPdf(htmlContent);
    pdf.SaveAs(outputPath);
    // Optionally pass result info
    e.Result = outputPath; // pass value to RunWorkerCompleted
}

Observação: você não pode interagir com os controles da interface do usuário aqui, pois o processo é executado em uma thread de trabalho .

Etapa 3 – Use RunWorkerCompleted para notificar a conclusão

Assim que a thread em segundo plano for concluída, você poderá atualizar a interface do usuário com os resultados sem problemas.

private void PdfWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    if (e.Error != null)
    {
        MessageBox.Show("Error: " + e.Error.Message);
    }
    else
    {
        string savedPath = e.Result.ToString();
        MessageBox.Show("PDF created at:\n" + savedPath);
    }
}

Etapa 4 – Acionando o BackgroundWorker a partir da interface do usuário

Adicione um botão Iniciar para executar a tarefa em segundo plano ao ser clicado:

private void btnGeneratePDF_Click(object sender, EventArgs e)
{
    if (pdfWorker == null)
        SetupBackgroundWorker();
    if (!pdfWorker.IsBusy)
    {
        btnGeneratePDF.Enabled = false;
        pdfWorker.RunWorkerAsync(); // execute method in background
    }
}

Exemplo de código completo

Aqui está tudo reunido em um único trecho de código funcional do Windows Forms:

using System;
using System.ComponentModel;
using IronPdf;
using System.IO;
using System.Windows.Forms;
namespace TestApp
{
    public partial class Form1 : Form
    {
        private BackgroundWorker worker;
        public Form1()
        {
            InitializeComponent();
            SetupBackgroundWorker();        }
        private void SetupBackgroundWorker()
        {
            worker = new BackgroundWorker();
            worker.DoWork += PdfWorker_DoWork;
            worker.RunWorkerCompleted += PdfWorker_RunWorkerCompleted;
        }
        private void btnGeneratePDF_Click(object sender, EventArgs e)
        {
            if (!worker.IsBusy)
            {
                btnGeneratePDF.Enabled = false;
                worker.RunWorkerAsync();
            }
        }
        private void PdfWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            var Renderer = new ChromePdfRenderer();
            string htmlContent = "<h1>Report</h1><p>This PDF was generated in the background.</p>";
            string outputPath = Path.Combine(Environment.CurrentDirectory, "Report.pdf");
            var pdf = Renderer.RenderHtmlAsPdf(htmlContent);
            pdf.SaveAs(outputPath);
            e.Result = outputPath;
        }
        private void PdfWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            btnGeneratePDF.Enabled = true;
            if (e.Error != null)
            {
                MessageBox.Show("Failed: " + e.Error.Message);
            }
            else
            {
                MessageBox.Show("PDF created: " + e.Result.ToString());
            }
        }
        private void btnGeneratePDF_Click_1(object sender, EventArgs e)
        {
            if (!worker.IsBusy)
            {
                btnGeneratePDF.Enabled = false;
                worker.RunWorkerAsync();
            }
        }
    }
}

Saída de formulário

C# BackgroundWorker (Como Funciona para Desenvolvedores): Figura 2 - Saída do formulário após a criação do PDF

Saída em PDF

C# BackgroundWorker (Como Funciona para Desenvolvedores): Figura 3 - Saída do PDF

Melhores práticas

Evite o acesso à interface do usuário no DoWork.

O manipulador de eventos DoWork é executado em uma thread diferente, portanto você não pode acessar elementos da interface do usuário diretamente. Use RunWorkerCompleted ou controle as chamadas Invoke() para atualizações seguras da interface do usuário.

Suporte ao cancelamento assíncrono

Se a sua tarefa for longa, habilite WorkerSupportsCancellation = true e monitore CancellationPending dentro do DoWork para dar suporte ao cancelamento solicitado.

Usar o recurso de atualizações de progresso do relatório (opcional)

Você pode habilitar WorkerReportsProgress = true e usar o evento ProgressChanged para exibir uma barra de progresso ou mensagens.

Validar o argumento de entrada

Ao usar RunWorkerAsync(argumento), valide o argumento em DoWork e retorne quaisquer resultados do método através de e.Result.

Conclusão

Utilizar o BackgroundWorker com o IronPDF permite executar tarefas complexas de renderização de PDF em uma thread em segundo plano, mantendo a responsividade da sua aplicação. Isso é especialmente valioso ao trabalhar com aplicativos WinForms ou WPF que exigem atualizações de interface do usuário responsivas durante tarefas de longa duração, como a geração de PDFs.

Ao lidar com o manipulador de eventos dowork, monitorar o resultado final e atualizar com segurança a interface do usuário no evento runworkercompleted, você garante que suas operações em segundo plano sejam executadas sem problemas.

Embora async/await seja frequentemente a escolha preferida para novas aplicações, BackgroundWorker continua sendo uma ferramenta confiável para projetos legados ou WinForms. Quer esteja a exportar relatórios ou a gerar documentos instantaneamente, esta abordagem ajudá-lo-á a tirar o máximo partido do IronPDF , mantendo a sua aplicação fluida e intuitiva.

Pronto para experimentar você mesmo?

Baixe a versão de avaliação gratuita do IronPDF e comece a criar soluções poderosas em PDF usando C# hoje mesmo. O período de teste oferece acesso completo aos recursos apresentados neste artigo — sem necessidade de cartão de crédito.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.