IRONSOFTWAREHOME
開發者更新

C#並行Foreach(開發者工作方式)

Jacob Mellor,首席技術官 @ Team Iron
Jacob Mellor
Updated: 2026年4月23日

C#中的Parallel.ForEach是什麼?

Parallel.ForEach 是C#中的一個方法,它允許您在集合或資料來源上執行平行迭代。 與順序處理集合中的每個項目不同,平行迴圈可以啟用並行執行,通過減少總體執行時間顯著提高性能。平行處理通過在多個核心處理器之間分配工作來運作,允許任務同時運行。 當處理彼此獨立的任務時,這尤其有用。

與順序處理項目的普通foreach迴圈相比,平行方法可以通過平行利用多個執行緒來更快速地處理大型資料集。

為什麼要使用IronPDF進行平行處理?

IronPDF 是一個用於在.NET中處理PDF的強大程式庫,能夠將HTML轉換為PDF,從PDF中提取文字,合併和分割文件,等等。 在處理大量PDF任務時,使用 Parallel.ForEach 進行平行處理可以顯著減少執行時間。無論您是生成數百個PDF還是同時從多個文件提取資料,利用IronPDF的資料平行處理可確保任務完成得更快、更有效率。

本指南適用於希望使用IronPDF和Parallel.ForEach優化其PDF處理任務的.NET開發者。 建議具備C#的基本知識並熟悉IronPDF程式庫。 在本指南結束時,您將能夠實施平行處理以同時處理多個PDF任務,從而提高性能和可擴展性。

入門指南

安裝IronPDF

要在專案中使用IronPDF,您需要通過NuGet安裝該程式庫。

NuGet套件安裝

安裝IronPDF,請按照以下步驟操作:

  1. 在Visual Studio中打開您的專案。
  2. 前往 工具 → NuGet套件管理員 → 為解決方案管理NuGet套件。
  3. 在NuGet套件管理器中搜索IronPDF。

C# Parallel Foreach(開發人員如何工作):圖1

  1. 點擊安裝,將IronPDF程式庫新增到您的專案中。

C# Parallel Foreach(開發人員如何工作):圖2

或者,您可以通過NuGet套件管理員控制台安裝它:

PM > Install-Package IronPdf

一旦安裝了IronPDF,您就可以開始將其用於PDF生成和操作任務。

Basic Concepts of Parallel.ForEach in C#

Parallel.ForEach 是 System.Threading.Tasks 命名空間的一部分,提供了一種簡單而有效的方式來並行執行迭代。 Parallel.ForEach 的語法如下:

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

集合中的每個項目都將並行處理,系統決定如何在可用執行緒之間分配工作負載。 您還可以指定選項來控制平行度,例如使用的最大執行緒數。

相比之下,傳統的 foreach 迴圈一個接一個地處理每個項目,而並行迴圈則可以同時處理多個項目,從而在處理大型集合時提高性能。

逐步實施

設置專案

首先,確保按照入門指南中所述安裝了IronPDF。 之後,您可以開始編寫平行PDF處理邏輯。

編寫平行處理邏輯

程式碼片段:使用 Parallel.ForEach 進行HTML到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");
});

此程式碼展示瞭如何將多個HTML頁面平行轉換為PDF。

處理平行處理錯誤

在處理平行任務時,錯誤處理至關重要。 在 Parallel.ForEach 迴圈內使用try-catch塊來管理任何異常。

程式碼片段:平行PDF任務的錯誤處理

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

實用用例和完整程式碼範例

同時從多個PDF中提取文字

平行處理的另一個用例是從一批PDF中提取文字。 在處理多個PDF文件時,併發執行文字提取可以節省大量時間。下面的例子展示了這如何完成。

範例:從多個文件中平行提取文字

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

輸出文件

C# Parallel Foreach(開發人員如何工作):圖3

在此程式碼中,每個PDF文件平行處理以提取文字,並將提取的文字保存在單獨的文字文件中。

範例:從HTML文件批量生成PDF平行

在這個範例中,我們將從一個HTML文件列表中平行生成多個PDF,這可能是當您需要將幾個動態HTML頁面轉換為PDF文件時的一個典型場景。

程式碼

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

控制台輸出

C# Parallel Foreach(開發人員如何工作):圖4

PDF輸出

C# Parallel Foreach(開發人員如何工作):圖5

解釋

  1. **HTML文件:**陣列htmlFiles中包含多個您想要轉換為PDF的HTML文件的路徑。

  2. 平行處理:

    • Parallel.ForEach(htmlFiles, htmlFile => {...}) 平行處理每個HTML文件,這在處理多個文件時加速了操作。
    • 對於renderer.RenderHtmlFileAsPdf(htmlFile);將其轉換為PDF。
  3. **保存PDF:**生成PDF後,將使用pdf.SaveAs方法保存,將輸出文件名附加為原始HTML文件的名稱。

  4. **錯誤處理:**如果發生任何錯誤(例如,HTML文件不存在或轉換時出現問題),它會被try-catch塊捕獲,並為特定文件列印錯誤消息。

性能提示和最佳實踐

避免IronPDF的執行緒安全問題

IronPDF對於大多數操作來說是執行緒安全的。 然而,像在平行寫入同一文件的操作可能會引發問題。 始終確保每個平行任務在單獨的輸出文件或資源上操作。

為大型資料集優化平行處理

為優化性能,考慮控制平行度。 對於大型資料集,您可能需要限制並行執行緒的數量以防止系統過載。

var options = new ExecutionDataflowBlockOptions
{
    MaxDegreeOfParallelism = 4
};

平行PDF操作中的記憶體管理

在處理大量PDF時,請注意記憶體使用。 嘗試在不再需要時立即釋放PdfDocument物件等資源。

使用擴展方法

擴展方法是一種特殊的靜態方法,允許您在不修改來源碼的情況下為現有型別新增新功能。 這在使用像IronPDF這樣的程式庫時很有用,您可能希望新增自訂處理方法或擴展其功能,以使處理PDF更方便,特別是在平行處理情境中。

在平行處理中使用擴展方法的好處

通過使用擴展方法,您可以建立簡潔、可重用的程式碼,簡化平行迴圈中的邏輯。 這種方法不僅減少了重複,也有助於您維護乾淨的程式碼庫,特別是在處理複雜的PDF工作流程和資料平行時。

結論

使用像Parallel.ForEach這樣的平行迴圈結合IronPDF,在處理大量PDF時可以顯著提高性能。 無論您是在將HTML轉換為PDF、提取文字還是操作文件,資料平行處理可通過同時運行任務加速執行。 並行方法確保操作可以在多核心處理器上執行,這減少了總執行時間,並提高了批量處理任務的性能。

雖然平行處理能加速任務,但須注意執行緒安全和資源管理。 IronPDF對於大多數操作是執行緒安全的,但在存取共享資源時,務必處理潛在的衝突。 考慮錯誤處理和記憶體管理以確保穩定性,特別是在應用擴展時。

如果您準備深入了解IronPDF並探索高級功能,官方文件提供了豐富的資訊。 此外,您可以利用其試用授權,允許您在自己的專案中測試該程式庫,然後再決定是否購買。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

...
閱讀更多

相關文章

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 Iron Suite
預訂您的免費現場演示
Booking Badge

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密。
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰。
無需信用卡或帳戶建立
C# 用於PDF的NuGet程式庫
使用NuGet安裝

版本: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. 在解決方案資源管理器,右鍵點選參考,管理NuGet包
  2. 選擇瀏覽並搜尋"IronPdf"
  3. 選擇套件並安裝
C# PDF DLL
下載DLL

版本: 2026.9

或者點擊此處下載Windows安裝程式。

  1. 下載並解壓IronPDF到類似~/Libs的位置,位於您的解決方案目錄中
  2. 在Visual Studio解決方案資源管理器,右鍵點選參考。選擇瀏覽,"IronPdf.dll"

授權從$999起