IronPDF ハウツー 非同期 & マルチスレッド C#で非同期とマルチスレッドを使ってPDFを生成する方法 Chipego Kalinda 更新日:1月 10, 2026 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る This article was translated from English: Does it need improvement? Translated View the article in English IronPDFはC#で非同期処理とマルチスレッドによるハイパフォーマンスなPDF生成を可能にし、複雑なHTMLレンダリングシナリオのバッチ処理時間を同期処理と比較して最大65%短縮します。 クイックスタート: IronPDFでHTMLを非同期にPDF変換 IronPDFを使用してわずか数行のコードで非同期PDF生成を開始できます。 RenderHtmlAsPdfAsyncメソッドを使用して、HTMLコンテンツを効率的にPDFに変換し、アプリケーションのパフォーマンスを最適化できます。 このガイドでは、バッチ処理やマルチスレッド環境に最適な、高性能PDF生成のための非同期操作の活用方法を紹介します。 今すぐ NuGet で PDF を作成してみましょう: NuGet パッケージ マネージャーを使用して IronPDF をインストールします PM > Install-Package IronPdf このコード スニペットをコピーして実行します。 var pdf = await IronPdf.ChromePdfRenderer.RenderHtmlAsPdfAsync("<h1>Hello World!</h1>"); 実際の環境でテストするためにデプロイする 今すぐ無料トライアルでプロジェクトに IronPDF を使い始めましょう 30日間無料トライアル 最小限のワークフロー(5ステップ) 非同期およびマルチスレッドPDF生成のためのIronPdfをNuGetからダウンロードする。 変換するためのHTMLコンテンツを準備する HTMLを非同期にPDFに変換するには、RenderHtmlAsPdfAsyncメソッドを使用してください。 PDF処理におけるマルチスレッドのためのParallel.ForEachメソッドを探求する さまざまなPDF生成技術のパフォーマンス比較を確認する C#で非同期PDF生成を実装するには? IronPDFはRenderHtmlAsPdfAsyncのようなレンダリングメソッドを使った非同期操作を完全にサポートしています。 IronPDFのasync実装はタスクベースの非同期パターン(TAP)を活用し、ノンブロッキングのPDF生成操作を可能にします。 このアプローチは、複雑なHTMLコンテンツのレンダリングやPDFリクエストの同時処理に役立ちます。 非同期PDF生成は、デスクトップアプリケーションのUIフリーズを防ぎ、Webアプリケーションのリクエストスループットを向上させます。 async/awaitパターンを使用すると、PDFレンダリングの完了を待っている間にアプリケーションで他の処理を行うことができ、応答性とユーザーエクスペリエンスが大幅に向上します。 なぜPDF生成に非同期メソッドを使用する必要があるのですか 非同期メソッドは、PDF生成ワークフローに重要な利点を提供します。 これらの開発ツールは、リソースを大量に消費する操作中にアプリケーションの応答性を維持し、マルチコアプロセッサでのリソース利用を改善し、サーバー環境でのスケーラビリティを向上させます。 複雑なHTMLからPDFへの変換を扱うとき、非同期操作はタイムアウトの問題を防ぎ、ユーザーエクスペリエンスを向上させます。 :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); $vbLabelText $csharpLabel バッチ処理の一般的なパターンは何ですか? PDFのバッチ処理には、メモリ使用量とパフォーマンスを慎重に考慮する必要があります。 効果的なパターンとしては、複数のPDF世代の並列実行のためにTask.WhenAllを使用すること、大きなバッチのためにチャンネルを使ってproducer-consumerパターンを実装すること、IronPDFドキュメントの並列処理例を利用することなどがあります。 // Batch processing with progress tracking public async Task<List<PdfDocument>> ProcessBatchAsync(List<string> htmlContents, IProgress<int> progress) { var renderer = new ChromePdfRenderer(); var results = new List<PdfDocument>(); var completed = 0; var tasks = htmlContents.Select(async html => { var pdf = await renderer.RenderHtmlAsPdfAsync(html); Interlocked.Increment(ref completed); progress?.Report(completed); return pdf; }); results.AddRange(await Task.WhenAll(tasks)); return results; } // Batch processing with progress tracking public async Task<List<PdfDocument>> ProcessBatchAsync(List<string> htmlContents, IProgress<int> progress) { var renderer = new ChromePdfRenderer(); var results = new List<PdfDocument>(); var completed = 0; var tasks = htmlContents.Select(async html => { var pdf = await renderer.RenderHtmlAsPdfAsync(html); Interlocked.Increment(ref completed); progress?.Report(completed); return pdf; }); results.AddRange(await Task.WhenAll(tasks)); return results; } $vbLabelText $csharpLabel 非同期PDF操作でエラーを処理するには? 非同期PDF操作におけるエラー処理には、包括的な例外管理戦略が必要です。 非同期メソッド内でtry-catchブロックを使用し、一時的な失敗のために再試行ロジックを実装し、高度な再試行ポリシーのためにPollyの使用を検討してください。 詳細な[パフォーマンスのトラブルシューティング](/troubleshooting/ironpdf-performance-assistance/)のために、IronPdfは広範なログ機能を提供します。 ```csharp public async Task RenderWithRetryAsync(string html, int maxRetries = 3) { var renderer = new ChromePdfRenderer(); for (int i = 0; i < maxRetries; i++) { try { return await renderer.RenderHtmlAsPdfAsync(html); } catch (Exception ex) when (i < maxRetries - 1) { // Log the exception await Task.Delay(TimeSpan.FromSeconds(Math.Pow(2, i))); // Exponential backoff } } throw new InvalidOperationException("Failed to render PDF after maximum retries"); } ``` ## PDF生成にマルチスレッドを使用するにはどうすればよいですか? IronPdfはスレッドセーフで、`ChromePdfRenderer`レンダリングエンジンを使用する場合はマルチスレッドをサポートします。マルチスレッドはmacOSマシンでは制限されていることに注意してください。 [Chromeレンダリングエンジン](/how-to/ironpdf-2021-chrome-rendering-engine-eap/)は、並行処理のための優れたスレッド安全性とパフォーマンス特性を提供します。 The Parallel.ForEach pattern works well for batch processing PDFs, allowing you to leverage all available CPU cores effectively. 包括的な[マルチスレッド生成の例](/examples/threading/)については、IronPDFのドキュメントを参照してください。 ### いつ非同期よりもマルチスレッドを選択すべきですか? マルチスレッディングは、十分なシステムリソースで複数のPDFを同時に処理する必要があるCPUバウンド操作に最適です。 マルチスレッドは、マルチコアシステム上で大量のPDFを処理するとき、各PDF生成が独立しているとき、メモリ使用量を制御できるときに選択します。 非同期は、I/Oバウンド操作とアプリケーションの応答性の維持に適しています。 ### スレッド安全性の考慮事項とは IronPDFの`ChromePdfRenderer`はスレッドセーフに設計されていますが、特定の考慮事項があります。 カスタム設定を使用する場合はスレッドごとに別々のレンダラー インスタンスを作成し、`PdfDocument` インスタンスを同期せずにスレッド間で共有することを避け、大きなドキュメントを同時に処理する場合はメモリ消費量を監視します。 [インストールの概要](/get-started/installation-overview/)では、スレッドセーフを最適化するためのIronPDFの設定についての詳細を説明しています。 ```csharp // Thread-safe PDF generation with custom settings per thread public void ProcessPdfsInParallel(List htmlContents) { Parallel.ForEach(htmlContents, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount }, html => { // Create a new renderer instance for each thread var renderer = new ChromePdfRenderer { RenderingOptions = new ChromePdfRenderOptions { MarginTop = 10, MarginBottom = 10, PaperSize = IronPdf.Rendering.PdfPaperSize.A4 } }; var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs($"output_{Thread.CurrentThread.ManagedThreadId}_{DateTime.Now.Ticks}.pdf"); }); } ``` ### いくつの同時スレッドを使用する必要がありますか? 最適な同時スレッド数は、CPUコア、利用可能なメモリ、PDFの複雑さによって異なります。 一般的なガイドラインとしては、CPUに束縛される操作には`Environment.ProcessorCount`を使用すること、メモリを多用するPDFには2-4スレッドに制限すること、最適な設定を見つけるためにシステムリソースを監視することなどが挙げられます。 [async の例](/examples/async/)は、さまざまなスレッド戦略を示しています。 ## どのようなパフォーマンスの向上が期待できますか? 比較の結果、レンダリング・アプローチによってパフォーマンスに大きな違いがあることがわかりました。 [複雑なHTMLレンダリングをシミュレートするためのWaitForクラス](/how-to/waitfor/)で、レンダリングに5秒の遅延が追加されます。 以下に、上記のさまざまなテクニックを使用した場合のパフォーマンスの比較表を示します。 NuGet 無料版 総ダウンロード数: 17,012,929 ライセンスを見る