ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
開発者として、非同期プログラミングは非常に有益であり、アプリケーションのパフォーマンス、効率、応答性を向上させることができます。 を使用することで、.NET、Java、Python、またはNode.(偽)**\特定のシナリオでデッドロックを避けることができます。 デッドロックは、非同期プログラミングにおいて、同期コンテキストが存在するときに発生します。(デスクトップアプリケーションのUIスレッドなど)翻訳を進める前に操作が完了することを想定しています。 それでも、待ち望まれているタスクは、同期コンテキストが利用可能になるのを待っており、循環待ちを生み出している。
本日はConfigureAwaitをIronPDFと共に使用することで、非同期プログラミングによってPDF処理タスクを効率的に実行することができます。 IronPDFはPDF関連の作業を簡単にする.NET PDFライブラリです。 堅牢な機能セット、強力なクロスプラットフォーム互換性、豊富なドキュメントを備えたこのツールは、開発者のツールキットに備えておくべき強力なPDFツールです。
非同期プログラミングとは、メインのアプリケーションスレッドから独立して特定の処理を実行できるようにするコードの記述方法を指します。 これは、I/O操作のような待機を必要とする長時間実行タスクに役立ちます。 メインスレッドをブロックすることなくこれらのタスクを実行できるようにすることで、これらのタスクの完了に時間がかかっている間もアプリケーションの実行を継続することができ、最終的にアプリケーションのパフォーマンスと応答性が向上します。
ConfigureAwaitは、非同期プログラミングにおいて、継続の実行方法を制御するために使用されるメソッドです。 継続は、await 式の後に実行されるコードです。デフォルトでは、 `awaitは現在のコンテキストをキャプチャし、継続をそのコンテキストにマーシャ ルしようとしますが、これは効果的でないことがあります。 **ConfigureAwait**では、キャプチャしたコンテキストで継続を実行するかどうかを指定 できます。(True)**\によって示されます。(偽)**\
.
を使用します。(偽)**\これは、これを使用すると、タスクに現在の同期コンテキストをキャプチャせず、元のコンテキストで再開しようとしないように指示するためです。 これにより、元のコンテキストの代わりにスレッドプールのスレッドで続きが実行されるため、メインスレッドがブロックされるのを防ぐことができます。
\コンフィギュレーションアウェイト(偽)**\ライブラリコードや、元のコンテキストの再開が不要な場合に特に有用です。
.NETプロジェクトでIronPDFを使い始めるには、まずIronPDF NuGetパッケージ. tools > NuGet Package Manager > NuGet Package Manager for Solutionに移動し、IronPDFを検索することで可能です:
あるいは、パッケージマネージャーコンソールで次のコマンドを実行してください:
Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
あなたのコードでIronPDFを使い始めるには、あなたのコードファイルの先頭に "using IronPdf "ステートメントがあることを確認してください。あなたの環境でIronPDFをセットアップするためのより詳細なガイドについては、そのはじめにページ
PDFファイルを非同期に生成することは、大量のPDFファイルを生成する必要がある場合や、複数の処理を同時に実行したい場合に特に有益です。 IronPDFを使うと、PDF関連のタスクを非同期で実行することができます:
using IronPdf;
using System.Threading.Tasks;
class program
{
static async Task Main(string[] args)
{
await GeneratePdfAsync();
}
static async Task GeneratePdfAsync()
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
string htmlContent = "<h1>Hello World!</h1>";
PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync(htmlContent);
await Task.Run(() => pdf.SaveAs("outputAsync.pdf"));
Console.WriteLine("Working!");
}
}
using IronPdf;
using System.Threading.Tasks;
class program
{
static async Task Main(string[] args)
{
await GeneratePdfAsync();
}
static async Task GeneratePdfAsync()
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
string htmlContent = "<h1>Hello World!</h1>";
PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync(htmlContent);
await Task.Run(() => pdf.SaveAs("outputAsync.pdf"));
Console.WriteLine("Working!");
}
}
Imports IronPdf
Imports System.Threading.Tasks
Friend Class program
Shared Async Function Main(ByVal args() As String) As Task
Await GeneratePdfAsync()
End Function
Private Shared Async Function GeneratePdfAsync() As Task
Dim renderer As New ChromePdfRenderer()
Dim htmlContent As String = "<h1>Hello World!</h1>"
Dim pdf As PdfDocument = Await renderer.RenderHtmlAsPdfAsync(htmlContent)
Await Task.Run(Function() pdf.SaveAs("outputAsync.pdf"))
Console.WriteLine("Working!")
End Function
End Class
このコードでは、GeneratePdfAsyncで非同期にPDFドキュメントを作成しています。() メソッド ChromePdfRenderer(クロームPDFレンダラー)は、HTMLコンテンツからPDFファイルを作成するのに不可欠なレンダラーを作成するために使用されます。 についてPdfDocumentクラスは、提供されたHTML文字列しかし、PDFを作成するのに使うこともできます。HTMLファイル, URL, イメージなど。 IronPDFでPDFを生成するさまざまな方法については、以下をご覧ください。ハウツーセクションPDFの生成について。
大きな PDF ファイルを扱うときは、非同期メソッドで 〚*ConfigureAwait 〛 を使ってください。(偽).NET、Java、Python、またはNode.jsを使用するプロジェクトに携わるソフトウェア開発者を対象としています。 この例では、大きなPDFドキュメントを使用し、以下の作業を行いました。テキスト抽出タスクは、非同期PDF処理がいかに有益であるかを示すことです。
using IronPdf;
using System.Threading.Tasks;
using System.IO;
using System;
class Program
{
static async Task Main(string[] args)
{
await LongPdfTask();
}
static async Task LongPdfTask()
{
try
{
// Initialize IronPDF's PdfDocument
PdfDocument pdf = await Task.Run(() => PdfDocument.FromFile("Sample.pdf")).ConfigureAwait(false);
// Extract text from PDF asynchronously
string text = await Task.Run(() => pdf.ExtractAllText()).ConfigureAwait(false);
// Write the extracted text to a file asynchronously
await Task.Run(() => File.WriteAllText("extractedText.txt", text)).ConfigureAwait(false);
Console.WriteLine("Extraction complete!");
}
catch (Exception ex)
{
Console.WriteLine($"Error in GeneratePdfAsync: {ex.Message}");
}
}
}
using IronPdf;
using System.Threading.Tasks;
using System.IO;
using System;
class Program
{
static async Task Main(string[] args)
{
await LongPdfTask();
}
static async Task LongPdfTask()
{
try
{
// Initialize IronPDF's PdfDocument
PdfDocument pdf = await Task.Run(() => PdfDocument.FromFile("Sample.pdf")).ConfigureAwait(false);
// Extract text from PDF asynchronously
string text = await Task.Run(() => pdf.ExtractAllText()).ConfigureAwait(false);
// Write the extracted text to a file asynchronously
await Task.Run(() => File.WriteAllText("extractedText.txt", text)).ConfigureAwait(false);
Console.WriteLine("Extraction complete!");
}
catch (Exception ex)
{
Console.WriteLine($"Error in GeneratePdfAsync: {ex.Message}");
}
}
}
Imports IronPdf
Imports System.Threading.Tasks
Imports System.IO
Imports System
Friend Class Program
Shared Async Function Main(ByVal args() As String) As Task
Await LongPdfTask()
End Function
Private Shared Async Function LongPdfTask() As Task
Try
' Initialize IronPDF's PdfDocument
Dim pdf As PdfDocument = Await Task.Run(Function() PdfDocument.FromFile("Sample.pdf")).ConfigureAwait(False)
' Extract text from PDF asynchronously
Dim text As String = Await Task.Run(Function() pdf.ExtractAllText()).ConfigureAwait(False)
' Write the extracted text to a file asynchronously
Await Task.Run(Sub() File.WriteAllText("extractedText.txt", text)).ConfigureAwait(False)
Console.WriteLine("Extraction complete!")
Catch ex As Exception
Console.WriteLine($"Error in GeneratePdfAsync: {ex.Message}")
End Try
End Function
End Class
上記のコードでは、ⅳ***ConfigureAwait(偽)**\私たちの場合、200ページを超える大きなPDFファイルからすべてのテキストを抽出するという、大規模で時間のかかる作業で、*
が使用されました。
トライブロック: LongPdfTask** メソッド内のコードをトライキャッチブロックでラップし、予期しない例外を潔く処理するようにしました。
**PdfDocument PDF = await Task.Run(()=> PdfDocument.FromFile("サンプル.pdf")).ConfigureAwait(偽)このラインは3つのセグメントに分けられます:
ファイルからPDFドキュメントをロードするためのメソッドです。指定されたファイルパスから新しい PdfDocument
インスタンスを作成します。このメソッドは、指定されたファイルが存在し、アクセス可能であることを前提としています。使用方法の例は以下の通りです:
// ファイルパスを指定してPDFドキュメントをロード
PdfDocument pdf = PdfDocument.FromFile("example.pdf");
// ファイルパスを指定してPDFドキュメントをロード
PdfDocument pdf = PdfDocument.FromFile("example.pdf");
' ファイルパスを指定してPDFドキュメントをロード
Dim pdf As PdfDocument = PdfDocument.FromFile("example.pdf")
このメソッドは、PDFの内容を操作するための基礎となるもので、多くの操作をサポートしています。("サンプル.pdf")このセクションでは、指定されたPDFファイルを同期的にIronPdf.PdfDocumentオブジェクト
* **タスク実行待ち(()=> ...):** PDF の読み込み処理を別スレッドで実行し、メインスレッドのブロックを回避します。 そのため、非同期作業となります。
コンフィギュレーションアウェイト(偽) 同期コンテキストを保持する必要がないライブラリコードやバックグラウンド処理で作業している場合に最適です。 一般的には、パフォーマンスが重要なサーバーサイドのコードが対象となります。 ConfigureAwaitを使用する(偽) つまり、await** オペレーションが完了したとき、継続は必ずしも非同期オペレーションを開始したのと同じスレッド上で実行されるわけではありません。
PDF処理に関しては、*ConfigureAwaitを実装してください。(偽)複数のPDF処理タスクを実行するときに、コンテキスト切り替えに関連するボトルネックを回避するために、*パフォーマンスを最大化するのに役立ちます。 また、大量のPDFファイルを処理する際に、アプリケーションのスムーズな実行を維持したり、コンソールアプリケーションやバックグラウンドサービスで作業している場合、コンテキスト切り替えが不要になる可能性がある状況で、効率を維持するのに役立ちます。
コンフィギュレーションアウェイト(True) UI、コードの単体テスト、ASP.NETアプリケーションなど、同じコンテキストで続きが実行される必要がある場合に最適ですが、使い方を間違えるとデッドロックにつながる可能性があります。 たとえば、UIを更新したり、httpcontextにアクセスしたりする場合です。). コンフィギュレーションアウェイト(True) はデフォルトの動作であり、単にConfigureAwaitと書くこともできます。
PDF処理タスクで使用する場合、PDF処理コードがUIと緊密に統合されている場合などに特に有益です。(WPF、WinFormsなどのUIアプリケーションを使用する場合)UIスレッドでこれらの更新が行われるように、同期コンテキストをキャプチャする必要があります。 また、スレッド親和性の要件により特定のスレッドで実行する必要がある、スレッドセンシティブな操作を扱う場合にも有益です。
非同期プログラミングにおける例外処理は、留意すべき重要な側面であり、慎重に考慮する必要があります。 非同期コードの周りにtry-catchブロックを使用することは、予期しない例外を潔く処理する素晴らしい方法です。
例えば:
public async Task SafeGeneratePdfAsync()
{
try
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Error Handling</h1>").ConfigureAwait(false);
await Task.Run(() => pdf.SaveAs("output.pdf")).ConfigureAwait(false);
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
}
}
public async Task SafeGeneratePdfAsync()
{
try
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Error Handling</h1>").ConfigureAwait(false);
await Task.Run(() => pdf.SaveAs("output.pdf")).ConfigureAwait(false);
}
catch (Exception ex)
{
Console.WriteLine($"An error occurred: {ex.Message}");
}
}
Public Async Function SafeGeneratePdfAsync() As Task
Try
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = Await renderer.RenderHtmlAsPdfAsync("<h1>Error Handling</h1>").ConfigureAwait(False)
Await Task.Run(Function() pdf.SaveAs("output.pdf")).ConfigureAwait(False)
Catch ex As Exception
Console.WriteLine($"An error occurred: {ex.Message}")
End Try
End Function
ConfigureAwaitで継続タスクを使用する場合、次のようにする。(偽)\Task.ContinueWithを使用している場合は、Task.Exception プロパティで例外を処理できます。
このためのコードの書き方の例は、次のようになります:
class program
{
public static async Task Main(string[] args)
{
await ProcessPdfWithContinuationAsync();
}
static Task ProcessPdfWithContinuationAsync()
{
return Task.Run(() => PdfDocument.FromFile("Sample.pdf"))
.ContinueWith(pdfTask =>
{
if (pdfTask.IsFaulted)
{
// Handle exceptions from loading the PDF
Console.WriteLine($"Error loading PDF: {pdfTask.Exception?.GetBaseException().Message}");
return;
}
var pdf = pdfTask.Result;
// Extract text asynchronously with exception handling
Task.Run(() => pdf.ExtractAllText())
.ContinueWith(extractTask =>
{
if (extractTask.IsFaulted)
{
// Handle exceptions from extracting text
Console.WriteLine($"Error extracting text: {extractTask.Exception?.GetBaseException().Message}");
return;
}
// Proceed if text extraction is successful
Console.WriteLine("Extracted text:");
Console.WriteLine(extractTask.Result);
}, TaskContinuationOptions.OnlyOnRanToCompletion);
}, TaskContinuationOptions.OnlyOnRanToCompletion);
}
class program
{
public static async Task Main(string[] args)
{
await ProcessPdfWithContinuationAsync();
}
static Task ProcessPdfWithContinuationAsync()
{
return Task.Run(() => PdfDocument.FromFile("Sample.pdf"))
.ContinueWith(pdfTask =>
{
if (pdfTask.IsFaulted)
{
// Handle exceptions from loading the PDF
Console.WriteLine($"Error loading PDF: {pdfTask.Exception?.GetBaseException().Message}");
return;
}
var pdf = pdfTask.Result;
// Extract text asynchronously with exception handling
Task.Run(() => pdf.ExtractAllText())
.ContinueWith(extractTask =>
{
if (extractTask.IsFaulted)
{
// Handle exceptions from extracting text
Console.WriteLine($"Error extracting text: {extractTask.Exception?.GetBaseException().Message}");
return;
}
// Proceed if text extraction is successful
Console.WriteLine("Extracted text:");
Console.WriteLine(extractTask.Result);
}, TaskContinuationOptions.OnlyOnRanToCompletion);
}, TaskContinuationOptions.OnlyOnRanToCompletion);
}
Friend Class program
Public Shared Async Function Main(ByVal args() As String) As Task
Await ProcessPdfWithContinuationAsync()
End Function
Private Shared Function ProcessPdfWithContinuationAsync() As Task
Return Task.Run(Function() PdfDocument.FromFile("Sample.pdf")).ContinueWith(Sub(pdfTask)
If pdfTask.IsFaulted Then
' Handle exceptions from loading the PDF
Console.WriteLine($"Error loading PDF: {pdfTask.Exception?.GetBaseException().Message}")
Return
End If
Dim pdf = pdfTask.Result
' Extract text asynchronously with exception handling
Task.Run(Function() pdf.ExtractAllText()).ContinueWith(Sub(extractTask)
If extractTask.IsFaulted Then
' Handle exceptions from extracting text
Console.WriteLine($"Error extracting text: {extractTask.Exception?.GetBaseException().Message}")
Return
End If
' Proceed if text extraction is successful
Console.WriteLine("Extracted text:")
Console.WriteLine(extractTask.Result)
End Sub, TaskContinuationOptions.OnlyOnRanToCompletion)
End Sub, TaskContinuationOptions.OnlyOnRanToCompletion)
End Function
IronPDFは強力なC# PDFライブラリで、PDF関連のすべてのタスクに豊富な機能を提供します。 .NET 8、7、6、.NET Core、Standard、Frameworkをフルサポートし、Windows、Linux、Mac、Docker、Azure、AWSなどのさまざまなアプリ環境で実行できるため、どのような環境でもIronPdfを最大限に活用できます。
IronPdfを使えば、以下のような様々なファイルやデータからPDFを生成することができます。HTMLファイル, HTML文字列, URL, 画像, DOCX、およびRTF多くの場合、わずか数行のコードで! PDFドキュメントの書式を処理し、以下の機能を適用できます。カスタム透かし, PDFのマージと分割ハンドルネームPDF暗号化以下のコンテンツを日本語に翻訳してください:セキュリティなど。
IronPDFは多くの処理に非同期メソッドを提供しており、開発者は非同期/待機パターンをシームレスに活用することができます。 このサポートにより、IronPDFは応答性を犠牲にすることなくパフォーマンスが重要なアプリケーションに統合でき、非同期環境でPDF関連のタスクに取り組む開発者にとって貴重なPDFツールとなります。
IronPDFを試してみたい、その幅広い機能を試してみたいという方は無料試用期間 素早く簡単にインストールできるIronPDFは、あなたのPDFプロジェクトですぐに稼働させることができます。IronPDFを使い続け、その強力な機能を活用してPDFのレベルアップを図りたいとお考えですか? ライセンス30日間の返金保証、1年間の製品サポートとアップデート、永久ライセンスが付属しています。(そのため、煩わしい定期的な費用はかかりません。!)
非同期にPDFを生成するために、IronPDFを使ってHTMLファイルをレンダリングするコードを実行し、結果を保存します。(偽)** 継続が不必要に元の同期コンテキストに切り替わらないようにすること。
using IronPdf;
using System.Threading.Tasks;
using System.IO;
using System;
class program
{
public static async Task Main(string[] args)
{
await CreateInvoicePdfAsync();
}
static async Task<string> CreateInvoicePdfAsync()
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
try
{
var pdf = await renderer.RenderHtmlFileAsPdfAsync("example.html").ConfigureAwait(false);
await Task.Run(() => pdf.SaveAs("invoice.pdf")).ConfigureAwait(false);
return filePath;
}
catch (Exception ex)
{
Console.WriteLine($"Error generating PDF: {ex.Message}");
return null;
}
}
}
using IronPdf;
using System.Threading.Tasks;
using System.IO;
using System;
class program
{
public static async Task Main(string[] args)
{
await CreateInvoicePdfAsync();
}
static async Task<string> CreateInvoicePdfAsync()
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
try
{
var pdf = await renderer.RenderHtmlFileAsPdfAsync("example.html").ConfigureAwait(false);
await Task.Run(() => pdf.SaveAs("invoice.pdf")).ConfigureAwait(false);
return filePath;
}
catch (Exception ex)
{
Console.WriteLine($"Error generating PDF: {ex.Message}");
return null;
}
}
}
Imports IronPdf
Imports System.Threading.Tasks
Imports System.IO
Imports System
Friend Class program
Public Shared Async Function Main(ByVal args() As String) As Task
Await CreateInvoicePdfAsync()
End Function
Private Shared Async Function CreateInvoicePdfAsync() As Task(Of String)
Dim renderer As New ChromePdfRenderer()
Try
Dim pdf = Await renderer.RenderHtmlFileAsPdfAsync("example.html").ConfigureAwait(False)
Await Task.Run(Function() pdf.SaveAs("invoice.pdf")).ConfigureAwait(False)
Return filePath
Catch ex As Exception
Console.WriteLine($"Error generating PDF: {ex.Message}")
Return Nothing
End Try
End Function
End Class
この例では、作成した非同期メソッド static async Task を使用しています。
また、await Task.Runを実装しました。())=> ...) また、非同期に操作を実行するメソッドも必要です。 最後に、pdf.SaveAsメソッドを使用して、新しく生成されたPDFファイルを「invoice.pdf」として保存しました。 CreateInvoicePdfAsyncのコード全体は、以下のとおりです。()** メソッドは、予期しない例外を処理するために、try-catch ブロックの中にラップされています。
ご覧のとおり、HTMLファイルを非同期でPDFに生成することに成功し、クリアで高品質なPDFファイルが作成されました。
非同期プログラミングは、応答性の高い効率的な.NETアプリケーションを構築し、Node.jsを使用するために不可欠です。ConfigureAwait特にアプリレベルのコードを書くときに、最適なパフォーマンスを達成するのに役立ちます。 作業内容IronPDF非同期メソッドとConfigureAwaitを活用しています。(偽) PDF処理タスクがメインスレッドをブロックしないようにし、アプリケーションの全体的な応答性を向上させます。 いつ、どのようにConfigureAwaitを使用するかを理解することで、IronPDFのPDF処理タスクをより堅牢でパフォーマンスフレンドリーにすることができます。
これで、非同期プログラミングでIronPDFとともにConfigureAwaitを活用するプロとして前進することができます。 IronPDFがあなたのPDF関連プロジェクトをどのように改善できるか、今すぐお試しください。! IronPDFが強力な汎用ライブラリコードとして提供する幅広い機能についてもっと知りたい方は、ぜひ便利なハウツーガイド. 非同期プログラミングメソッドとIronPDFの併用についてもっと読みたい、あるいはIronPDF全般についてもっと知りたい場合は、以下をご覧くださいブログ記事. その他の非同期PDF生成例をお探しの場合は、以下をご覧ください。C# Wait For Seconds (C#は何秒待つのですか?この投稿、またはC#タスク.Run。ご提供いただきましたコンテンツが空白です。翻訳が必要な英語のテキストをお送りください。その内容を日本語に翻訳いたします。
9つの .NET API製品 オフィス文書用