IronPDF 操作指南 非同步和多執行緒 How to Generate PDFs with Async and Multithreading Chipego Kalinda 更新日期:7月 22, 2025 Download IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article This article was translated from English: Does it need improvement? Translated View the article in English 在使用IronPDF在C#和VB.NET中批量生成高性能PDF或優化性能時,非同步和執行緒是至關重要的。 快速開始:使用IronPDF非同步轉換HTML為PDF 僅需幾行代碼,即可使用IronPDF開始非同步PDF生成。 通過RenderHtmlAsPdfAsync方法,您可以高效地將HTML內容轉換為PDF,從而優化您的應用程序性能。 本指南將向您展示如何利用非同步操作的力量來進行高效性能的PDF生成,非常適合批量處理和多執行緒環境。 體驗IronPDF強大功能的簡便快捷。 Get started making PDFs with NuGet now: Install IronPDF with NuGet Package Manager PM > Install-Package IronPdf Copy and run this code snippet. var pdf = await IronPdf.ChromePdfRenderer.RenderHtmlAsPdfAsync("<h1>Hello World!</h1>"); Deploy to test on your live environment Start using IronPDF in your project today with a free trial Free 30 day Trial class="hsg-featured-snippet"> 簡化工作流程(5步驟) 從NuGet下載IronPDF以開始非同步和多執行緒PDF生成 準備要轉換的HTML內容 使用RenderHtmlAsPdfAsync方法與IronPDF非同步地將HTML轉換為PDF 探索使用Parallel.ForEach方法進行PDF處理中的多執行緒 查看不同PDF生成技術的性能比較 非同步範例 IronPDF完全支持使用其渲染方法,如RenderHtmlAsPdfAsync方法進行非同步操作。 :path=/static-assets/pdf/content-code-examples/how-to/async-async.cs using IronPdf; using System.Threading.Tasks; // Instantiate ChromePdfRenderer ChromePdfRenderer renderer = new ChromePdfRenderer(); string[] htmlStrings = {"<h1>Html 1</h1>", "<h1>Html 2</h1>", "<h1>Html 3</h1>"}; // Create an array to store the tasks for rendering var renderingTasks = new Task<PdfDocument>[htmlStrings.Length]; for (int i = 0; i < htmlStrings.Length; i++) { int index = i; // Capturing the loop variable renderingTasks[i] = Task.Run(async () => { // Render HTML to PDF return await renderer.RenderHtmlAsPdfAsync(htmlStrings[index]); }); } // Wait for all rendering tasks to complete // await Task.WhenAll(renderingTasks); Imports IronPdf Imports System.Threading.Tasks ' Instantiate ChromePdfRenderer Private renderer As New ChromePdfRenderer() Private htmlStrings() As String = {"<h1>Html 1</h1>", "<h1>Html 2</h1>", "<h1>Html 3</h1>"} ' Create an array to store the tasks for rendering Private renderingTasks = New Task(Of PdfDocument)(htmlStrings.Length - 1){} For i As Integer = 0 To htmlStrings.Length - 1 Dim index As Integer = i ' Capturing the loop variable renderingTasks(i) = Task.Run(Async Function() ' Render HTML to PDF Return Await renderer.RenderHtmlAsPdfAsync(htmlStrings(index)) End Function) Next i ' Wait for all rendering tasks to complete ' await Task.WhenAll(renderingTasks); $vbLabelText $csharpLabel 多執行緒範例 IronPDF是執行緒安全的,在使用IronPdf.ChromePdfRenderer渲染引擎時支持多執行緒操作。請注意,在macOS機器上的多執行緒操作受限制。 Parallel.ForEach模式特別適用於批量處理PDF。 :path=/static-assets/pdf/content-code-examples/how-to/async-multi-thread.cs using IronPdf; using System.Collections.Concurrent; using System.Collections.Generic; using System.Threading.Tasks; var queue = new List<string>() { "<h1>Html 1</h1>", "<h1>Html 2</h1>", "<h1>Html 3</h1>" }; // Instantiate ChromePdfRenderer ChromePdfRenderer renderer = new ChromePdfRenderer(); // Create a list to store the rendered PDFs List<PdfDocument> pdfResults = new List<PdfDocument>(); Parallel.ForEach(queue, html => { // Render HTML to PDF PdfDocument pdf = renderer.RenderHtmlAsPdf(html); // You may choose to save the PDF to disk here if needed // For this example, we'll store it in the pdfResults list lock (pdfResults) { pdfResults.Add(pdf); } }); Imports IronPdf Imports System.Collections.Concurrent Imports System.Collections.Generic Imports System.Threading.Tasks Private queue = New List(Of String)() From {"<h1>Html 1</h1>", "<h1>Html 2</h1>", "<h1>Html 3</h1>"} ' Instantiate ChromePdfRenderer Private renderer As New ChromePdfRenderer() ' Create a list to store the rendered PDFs Private pdfResults As New List(Of PdfDocument)() Parallel.ForEach(queue, Sub(html) ' Render HTML to PDF Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html) ' You may choose to save the PDF to disk here if needed ' For this example, we'll store it in the pdfResults list SyncLock pdfResults pdfResults.Add(pdf) End SyncLock End Sub) $vbLabelText $csharpLabel 性能比較 我們來進行比較。 通過WaitFor類來模擬複雜HTML渲染添加額外的5秒延遲。 以下是使用上述不同技術的性能比較表。 正常渲染 非同步渲染 多執行緒渲染 15.75秒 05.59秒 05.68秒 常見問題解答 如何在C#中異步地將HTML轉換為PDF? 你可以在C#中使用IronPDF的RenderHtmlAsPdfAsync方法異步地將HTML轉換為PDF,這樣可以有效生成PDF,不會阻塞主線程。 使用多線程處理PDF有哪些好處? 使用IronPDF進行PDF處理的多線程允許您同時處理多個PDF轉換,非常適合批量處理,並利用多核心CPU提高性能。 IronPDF能否用於異步和多線程PDF生成? 是的,IronPDF支持異步和多線程PDF生成。您可以使用RenderHtmlAsPdfAsync進行異步操作,使用Parallel.ForEach進行多線程處理。 IronPDF在PDF生成時是否為線程安全? 是的,IronPDF是線程安全的,特別是在使用IronPdf.ChromePdfRenderer渲染引擎時,但在macOS上有一些限制。 異步PDF生成與多線程生成的性能比較如何? 在性能比較中,使用IronPDF的異步PDF生成通常需要大約5.59秒,而多線程生成需要大約5.68秒,兩者均顯著快於正常渲染的15.75秒。 在使用IronPDF處理PDF時,多線程的一個實用案例是什麼? 使用IronPDF進行多線程處理的一個實用案例是批量處理,您需要同時將大量HTML文件轉換為PDF,優化資源使用並減少處理時間。 在macOS上使用IronPDF時有什麼特別的考慮? 雖然IronPDF支持多線程功能,但在macOS上使用此功能時存在已知限制。測試和驗證在特定環境中的多線程應用程序是很重要的。 Chipego Kalinda 立即與工程團隊聊天 軟體工程師 Chipego 擁有自然的傾聽技巧,這有助於他理解客戶問題並提供智能解決方案。他於 2023 年加入 Iron Software 團隊,擁有信息技術學士學位。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但他對所有產品的知識日漸增長,因為他發現新的方法來支持客戶。他喜歡 Iron Software 的合作生活,來自公司的成員將他們的各種經驗帶來貢獻於有效及創新解決方案。當 Chipego 離開書桌時,他經常被発現正享受一本好書或者在踢足球。 準備好開始了嗎? Nuget 下載 16,154,058 | 版本: 2025.11 剛剛發布 免費 NuGet 下載 總下載量:16,154,058 查看許可證