IRONSOFTWAREHOME
ATUALIZAÇÕES DO DESENVOLVEDOR

C# Paralelo Foreach (Como funciona para desenvolvedores)

Curtis Chau
Curtis Chau
Updated: 23 de abril de 2026

O que é Parallel.ForEach em C#?

Parallel.ForEach é um método em C# que permite realizar iterações paralelas sobre uma coleção ou fonte de dados. Em vez de processar cada item da coleção sequencialmente, um loop paralelo permite a execução simultânea, o que pode melhorar significativamente o desempenho, reduzindo o tempo total de execução. O processamento paralelo funciona dividindo o trabalho entre vários processadores principais, permitindo que as tarefas sejam executadas simultaneamente. Isso é particularmente útil ao processar tarefas que são independentes umas das outras.

Ao contrário de um loop foreach normal, que processa os itens sequencialmente, a abordagem paralela consegue lidar com grandes conjuntos de dados muito mais rapidamente, utilizando várias threads em paralelo.

Por que usar processamento paralelo com o IronPDF?

IronPDF é uma biblioteca poderosa para manipulação de PDFs em .NET, capaz de converter HTML em PDF , extrair texto de PDFs , mesclar e dividir documentos , e muito mais. Ao lidar com grandes volumes de tarefas em PDF, o uso de processamento paralelo com Parallel.ForEach pode reduzir significativamente o tempo de execução. Seja para gerar centenas de PDFs ou extrair dados de vários arquivos simultaneamente, o aproveitamento do paralelismo de dados com o IronPDF garante que as tarefas sejam concluídas com mais rapidez e eficiência.

Este guia destina-se a desenvolvedores .NET que desejam otimizar suas tarefas de processamento de PDF usando IronPDF e Parallel.ForEach. Recomenda-se conhecimento básico de C# e familiaridade com a biblioteca IronPDF . Ao final deste guia, você será capaz de implementar o processamento paralelo para lidar com várias tarefas em PDF simultaneamente, melhorando tanto o desempenho quanto a escalabilidade.

Começando

Instalando o IronPDF

Para usar o IronPDF em seu projeto, você precisa instalar a biblioteca via NuGet.

Instalação de Pacotes NuGet

Para instalar o IronPDF, siga estes passos:

  1. Abra seu projeto no Visual Studio.
  2. Vá para FerramentasGerenciador de Pacotes NuGetGerenciar Pacotes NuGet para a Solução .
  3. Procure por IronPDF no gerenciador de pacotes NuGet .

C# Parallel Foreach (Como Funciona para Desenvolvedores): Figura 1

  1. Clique em Instalar para adicionar a biblioteca IronPDF ao seu projeto.

C# Parallel Foreach (Como Funciona para Desenvolvedores): Figura 2

Alternativamente, você pode instalá-lo através do Console do Gerenciador de Pacotes NuGet :

PM > Install-Package IronPdf

Após a instalação do IronPDF , você estará pronto para começar a usá-lo para tarefas de geração e manipulação de PDFs.

Basic Concepts of Parallel.ForEach in C#

Parallel.ForEach é parte do namespace System.Threading.Tasks e fornece uma maneira simples e eficaz de executar iterações simultaneamente. A sintaxe para Parallel.ForEach é a seguinte:

Parallel.ForEach(collection, item =>
{
    // Code to process each item
});

Cada item da coleção é processado em paralelo, e o sistema decide como distribuir a carga de trabalho entre os threads disponíveis. Você também pode especificar opções para controlar o grau de paralelismo, como o número máximo de threads utilizadas.

Em comparação, um loop foreach tradicional processa cada item um após o outro, enquanto o loop paralelo pode processar múltiplos itens simultaneamente, melhorando o desempenho ao lidar com coleções grandes.

Implementação passo a passo

Configurando o projeto

Primeiro, certifique-se de que o IronPDF esteja instalado conforme descrito na seção Introdução. Depois disso, você pode começar a escrever sua lógica de processamento paralelo de PDF.

Escrevendo a lógica de processamento paralelo

Trecho de código: Usando Parallel.ForEach para conversão de HTML para PDF

string[] htmlFiles = { "page1.html", "page2.html", "page3.html" };
Parallel.ForEach(htmlFiles, htmlFile =>
{
    // Load the HTML content into IronPDF and convert it to PDF
    ChromePdfRenderer renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlFile);
    // Save the generated PDF to the output folder
    pdf.SaveAs($"output_{htmlFile}.pdf");
});

Este código demonstra como converter várias páginas HTML em PDFs em paralelo.

Tratamento de erros de processamento paralelo

Ao lidar com tarefas paralelas, o tratamento de erros é crucial. Use blocos try-catch dentro do loop Parallel.ForEach para gerenciar quaisquer exceções.

Trecho de código: Tratamento de erros em tarefas PDF paralelas

Parallel.ForEach(pdfFiles, pdfFile =>
{
    try
    {
        var pdf = IronPdf.PdfDocument.FromFile(pdfFile);
        string text = pdf.ExtractAllText();
        System.IO.File.WriteAllText($"extracted_{pdfFile}.txt", text);
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Error processing {pdfFile}: {ex.Message}");
    }
});

Casos de uso práticos com exemplos de código completos

Extraindo texto de vários PDFs simultaneamente

Outro caso de uso para processamento paralelo é a extração de texto de um lote de PDFs. Ao lidar com vários arquivos PDF, realizar a extração de texto simultaneamente pode economizar muito tempo. O exemplo a seguir demonstra como isso pode ser feito.

Exemplo: Extração paralela de texto a partir de múltiplos documentos

using IronPdf;
using System.Linq;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        string[] pdfFiles = { "doc1.pdf", "doc2.pdf", "doc3.pdf" };
        Parallel.ForEach(pdfFiles, pdfFile =>
        {
            var pdf = IronPdf.PdfDocument.FromFile(pdfFile);
            string text = pdf.ExtractText();
            System.IO.File.WriteAllText($"extracted_{pdfFile}.txt", text);
        });
    }
}

Documentos de saída

C# Parallel Foreach (Como Funciona para Desenvolvedores): Figura 3

Neste código, cada arquivo PDF é processado em paralelo para extrair o texto, e o texto extraído é salvo em arquivos de texto separados.

Exemplo: Geração em lote de PDFs a partir de arquivos HTML em paralelo

Neste exemplo, vamos gerar vários PDFs a partir de uma lista de arquivos HTML em paralelo, o que pode ser um cenário típico quando você precisa converter várias páginas HTML dinâmicas em documentos PDF.

Código

using IronPdf;
using System;
using System.Threading.Tasks;

class Program
{
    static void Main(string[] args)
    {
        string[] htmlFiles = { "example.html", "example_1.html", "example_2.html" };
        Parallel.ForEach(htmlFiles, htmlFile =>
        {
            try
            {
                // Load the HTML content into IronPDF and convert it to PDF
                ChromePdfRenderer renderer = new ChromePdfRenderer();
                PdfDocument pdf = renderer.RenderHtmlFileAsPdf(htmlFile);
                // Save the generated PDF to the output folder
                pdf.SaveAs($"output_{htmlFile}.pdf");
                Console.WriteLine($"PDF created for {htmlFile}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error processing {htmlFile}: {ex.Message}");
            }
        });
    }
}

Saída do console

C# Parallel Foreach (Como Funciona para Desenvolvedores): Figura 4

Saída em PDF

C# Parallel Foreach (Como Funciona para Desenvolvedores): Figura 5

Explicação

  1. Arquivos HTML: O array htmlFiles contém caminhos para múltiplos arquivos HTML que você deseja converter em PDFs.

  2. Processamento paralelo:

    • Parallel.ForEach(htmlFiles, htmlFile => {...}) processa cada arquivo HTML simultaneamente, o que acelera a operação ao lidar com múltiplos arquivos.
    • Para cada arquivo no array htmlFiles, o código o converte para um PDF usando renderer.RenderHtmlFileAsPdf(htmlFile);.
  3. Salvando o PDF: Após gerar o PDF, ele é salvo usando o método pdf.SaveAs, anexando o nome do arquivo de saída ao nome do arquivo HTML original.

  4. Tratamento de erros: Se ocorrer algum erro (por exemplo, o arquivo HTML não existe ou há um problema durante a conversão), ele é capturado pelo bloco try-catch e uma mensagem de erro é exibida para o arquivo específico.

Dicas de desempenho e melhores práticas

Evitando problemas de segurança de rosca com o IronPDF

IronPDF é seguro para uso com múltiplas threads na maioria das operações. No entanto, algumas operações, como escrever no mesmo arquivo em paralelo, podem causar problemas. Assegure-se sempre de que cada tarefa paralela opere em um arquivo de saída ou recurso separado.

Otimizando o processamento paralelo para grandes conjuntos de dados

Para otimizar o desempenho, considere controlar o grau de paralelismo. Para conjuntos de dados grandes, talvez seja interessante limitar o número de threads simultâneas para evitar sobrecarga do sistema.

var options = new ExecutionDataflowBlockOptions
{
    MaxDegreeOfParallelism = 4
};

Gerenciamento de memória em operações paralelas de PDF

Ao processar um grande número de PDFs, fique atento ao uso de memória. Tente liberar recursos como objetos PdfDocument assim que não forem mais necessários.

Utilizando métodos de extensão

Um método de extensão é um tipo especial de método estático que permite adicionar novas funcionalidades a um tipo existente sem modificar seu código-fonte. Isso pode ser útil ao trabalhar com bibliotecas como o IronPDF, onde você pode querer adicionar métodos de processamento personalizados ou estender sua funcionalidade para tornar o trabalho com PDFs mais conveniente, especialmente em cenários de processamento paralelo.

Benefícios da utilização de métodos de extensão no processamento paralelo

Ao utilizar métodos de extensão, você pode criar um código conciso e reutilizável que simplifica a lógica em loops paralelos. Essa abordagem não só reduz a duplicação, como também ajuda a manter um código limpo, especialmente ao lidar com fluxos de trabalho complexos em PDF e paralelismo de dados.

Conclusão

Usar loops paralelos como Parallel.ForEach com IronPDF proporciona ganhos significativos de desempenho ao processar grandes volumes de PDFs. Seja para converter HTML em PDF, extrair texto ou manipular documentos, o paralelismo de dados permite uma execução mais rápida, executando tarefas simultaneamente. A abordagem paralela garante que as operações possam ser executadas em vários processadores principais, o que reduz o tempo total de execução e melhora o desempenho para tarefas de processamento em lote.

Embora o processamento paralelo acelere as tarefas, fique atento à segurança de threads e ao gerenciamento de recursos. O IronPDF é thread-safe para a maioria das operações, mas é importante lidar com possíveis conflitos ao acessar recursos compartilhados. Considere o tratamento de erros e o gerenciamento de memória para garantir a estabilidade, especialmente à medida que sua aplicação cresce.

Se você estiver pronto para se aprofundar no IronPDF e explorar recursos avançados, a documentação oficial fornece informações detalhadas. Além disso, você pode aproveitar a licença de avaliação, que permite testar a biblioteca em seus próprios projetos antes de efetuar a compra.

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.