.NETヘルプ C# Cancellationtoken(開発者向けの仕組み) Jacob Mellor 更新日:2025年6月22日 IronPDF をダウンロード NuGet ダウンロード DLL ダウンロード Windows 版 無料トライアル LLM向けのコピー LLM向けのコピー LLM 用の Markdown としてページをコピーする ChatGPTで開く このページについてChatGPTに質問する ジェミニで開く このページについてGeminiに問い合わせる Grokで開く このページについてGrokに質問する 困惑の中で開く このページについてPerplexityに問い合わせる 共有する Facebook で共有 Xでシェア(Twitter) LinkedIn で共有 URLをコピー 記事をメールで送る 現代のソフトウェア開発において、特に大規模または複雑なPDFファイルの生成が一般的なアプリケーションでは、長時間実行されるタスクを効率的に管理することが重要です。 C#開発者は、シームレスなPDF作成のためにIronPDFに頼ることがよくありますが、潜在的に長時間に渡るPDF生成タスクを処理するには、ユーザーの中断やキャンセルを管理する方法が必要です。 ここでC#のCancellationTokenが登場します。 IronPDFと統合することで、PDF生成タスクを高応答かつ効率的にすることができます。 この記事では、CancellationToken の重要性、それがIronPDFとうまく組み合わせられる理由、そしてそれを実装してタスクを適切にキャンセルする方法について説明します。 C#におけるCancellationTokenとは何ですか? CancellationTokenは、C#における非同期プログラミングの基本的な部分です。 これにより、タスクをキャンセルすべきであることを信号として送信し、長時間実行される操作に対する開発者の制御を強化できます。 これは特に、目標量に達するまでデータから動的レポートを継続的に生成したいような、レポートや請求書の作成などのタスクを実行する際に役立ちます。この時点で操作がキャンセルされるべきであることを示すためにC#キャンセレーショントークンを使用し、プログラムを優雅に終了させます。 それはどのように機能しますか? 本質的に、CancellationTokenはタスクやメソッドに渡され、キャンセルの要求が出されているかどうかを定期的にチェックします。 もしそうであれば、タスクは穏やかに終了し、リソースが解放され、アプリケーションの応答性が改善されます。 特にPDF生成のようなケースで役立ちます。複雑なドキュメントの作成には時間がかかることがあります。 CancellationTokensを使用することで、不要に長く実行されるタスクの潜在的な欠点を回避できます。これには、無駄なシステムリソースや悪いユーザーエクスペリエンスが含まれます。 内部キャンセレーショントークン C#において、内部キャンセレーショントークンとは、特定のクラスやメソッド内で作成され、管理されるキャンセレーショントークンを指します。外部ソースから渡されるわけではありません。 これは、単一のコンポーネントの範囲内でのタスクキャンセルのより細かいコントロールを可能にし、内部から発生するキャンセル要求を監視しレスポンスすることを可能にします。 内部キャンセレーショントークンを使用することは、キャンセルロジックをクラスの利用者に公開せずにカプセル化したいシナリオで特に有用です。これによりクリーンなインターフェースを維持できます。 このアプローチは、コードのモジュール性を向上させ、複雑な非同期ワークフローを管理しやすくする一方で、広範なCancellationTokenフレームワークによる柔軟性を活用できます。 IronPDFでキャンセレーショントークンを使う理由は? 特にWebアプリケーションや複雑なレポートシステムでPDFを生成する場合、大きなPDFファイルを作成するタスクをユーザーが開始するが、その後で画面を離れたり結果を不要としたりする状況に遭遇するかもしれません。 このような場合、PDF生成プロセスをキャンセルしてサーバーやUIに不要な負荷をかけないようにしたいものです。 以下がIronPDFとCancellationTokenを使用することが重要な理由です: 1. 不要な負荷を防ぐ ユーザーが依頼したPDFを必要としなくなった場合、そのプロセスを続行する理由はありません。 CancellationTokenを利用することで、PDF生成タスクを停止し、サーバーへの余分な負荷を防ぎ、アプリケーションの全体的なパフォーマンスを改善することができます。 2. ユーザーエクスペリエンスの向上 デスクトップアプリケーションでは、PDF生成がUIスレッド上で行われ、タスクが長時間にわたる場合、ユーザーインターフェースがロックされることがあります。 CancellationTokenを組み込むことで、ユーザーがタスクをキャンセルし、アプリケーションの応答性を保つことができます。 3. スケーラビリティの向上 多数のユーザーが同時にPDFを生成するWebアプリケーションにおいて、スケーラビリティが鍵となります。 CancellationTokenは、不要なタスクを安全にキャンセルし、他のリクエストを効率的に処理するためのリソースを解放することができます。 IronPDFでのCancellationToken実装方法 CancellationTokenが有用である理由がわかったので、IronPDFとの実装方法を説明します。 ステップ1:プロジェクトにIronPDFを設定する IronPDFを使い始めるには、まずインストールする必要があります。 既にインストール済みの場合は、次のセクションに進んでください。 そうでない場合、以下の手順で IronPDF ライブラリをインストールする方法をカバーしています。 NuGetパッケージマネージャコンソールを通じて NuGetパッケージマネージャーコンソールを使用してIronPDFをインストールするには、Visual Studioを開いてパッケージマネージャーコンソールに移動します。 その後、以下のコマンドを実行します。 Install-Package IronPdf ソリューションのNuGetパッケージマネージャー経由で Visual Studioを開いたら、"ツール -> NuGetパッケージマネージャー -> ソリューションのNuGetパッケージを管理"に移動してIronPDFを検索します。 ここから、プロジェクトを選択して"インストール"をクリックするだけで、IronPDFがプロジェクトに追加されます。 IronPDFをインストールしたら、IronPDFを使い始めるためには、コードの先頭に正しいusing文を追加するだけです。 using IronPdf; using IronPdf; $vbLabelText $csharpLabel ステップ2: 非同期PDF生成メソッドでキャンセレーショントークンを使用する 実際の実装に取り組みましょう。 この例では、IronPDFを使用してHTMLからシンプルなPDFを生成します。しかし、CancellationTokenを使用して、必要に応じてタスクをキャンセルできるようにします。 using IronPdf; using System; using System.Threading; using System.Threading.Tasks; public class PdfGenerator { public async Task GeneratePdfWithCancellation(CancellationToken token) { var Renderer = new ChromePdfRenderer(); try { // Check for cancellation before starting token.ThrowIfCancellationRequested(); // Simulating a long task that can be checked for cancellation periodically for (int i = 0; i < 10; i++) { // Simulating a piece of work (this could be part of a larger HTML rendering) await Task.Delay(500); // Simulate chunk processing // Periodically check for cancellation in long-running operations if (token.IsCancellationRequested) { Console.WriteLine("Cancellation requested. Throwing exception."); token.ThrowIfCancellationRequested(); // This will trigger an OperationCanceledException } } // Simulate PDF creation after the long process var pdf = await Renderer.RenderHtmlAsPdfAsync("<h1>Hello, PDF!</h1>"); // Save the PDF after ensuring no cancellation occurred pdf.SaveAs("output.pdf"); Console.WriteLine("PDF generated successfully."); } catch (OperationCanceledException) { // Handle task cancellation Console.WriteLine("PDF generation was canceled."); } catch (Exception ex) { // Handle other exceptions Console.WriteLine($"An error occurred: {ex.Message}"); } } } public class Program { public static async Task Main(string[] args) { // Create a CancellationTokenSource var cancellationTokenSource = new CancellationTokenSource(); // Create our cancellation token var token = cancellationTokenSource.Token; // Start the PDF generation task var pdfGenerator = new PdfGenerator(); Task pdfTask = pdfGenerator.GeneratePdfWithCancellation(token); // Simulate a cancellation scenario Console.WriteLine("Press any key to cancel PDF generation..."); Console.ReadKey(); // Cancel the task by calling Cancel() on the CancellationTokenSource cancellationTokenSource.Cancel(); try { // Await the task to handle any exceptions, such as cancellation await pdfTask; } catch (OperationCanceledException) { // Confirm the cancellation Console.WriteLine("The PDF generation was canceled."); } finally { cancellationTokenSource.Dispose(); } Console.WriteLine("Program finished."); } } using IronPdf; using System; using System.Threading; using System.Threading.Tasks; public class PdfGenerator { public async Task GeneratePdfWithCancellation(CancellationToken token) { var Renderer = new ChromePdfRenderer(); try { // Check for cancellation before starting token.ThrowIfCancellationRequested(); // Simulating a long task that can be checked for cancellation periodically for (int i = 0; i < 10; i++) { // Simulating a piece of work (this could be part of a larger HTML rendering) await Task.Delay(500); // Simulate chunk processing // Periodically check for cancellation in long-running operations if (token.IsCancellationRequested) { Console.WriteLine("Cancellation requested. Throwing exception."); token.ThrowIfCancellationRequested(); // This will trigger an OperationCanceledException } } // Simulate PDF creation after the long process var pdf = await Renderer.RenderHtmlAsPdfAsync("<h1>Hello, PDF!</h1>"); // Save the PDF after ensuring no cancellation occurred pdf.SaveAs("output.pdf"); Console.WriteLine("PDF generated successfully."); } catch (OperationCanceledException) { // Handle task cancellation Console.WriteLine("PDF generation was canceled."); } catch (Exception ex) { // Handle other exceptions Console.WriteLine($"An error occurred: {ex.Message}"); } } } public class Program { public static async Task Main(string[] args) { // Create a CancellationTokenSource var cancellationTokenSource = new CancellationTokenSource(); // Create our cancellation token var token = cancellationTokenSource.Token; // Start the PDF generation task var pdfGenerator = new PdfGenerator(); Task pdfTask = pdfGenerator.GeneratePdfWithCancellation(token); // Simulate a cancellation scenario Console.WriteLine("Press any key to cancel PDF generation..."); Console.ReadKey(); // Cancel the task by calling Cancel() on the CancellationTokenSource cancellationTokenSource.Cancel(); try { // Await the task to handle any exceptions, such as cancellation await pdfTask; } catch (OperationCanceledException) { // Confirm the cancellation Console.WriteLine("The PDF generation was canceled."); } finally { cancellationTokenSource.Dispose(); } Console.WriteLine("Program finished."); } } $vbLabelText $csharpLabel コンソール出力 PDF 出力 この例では、CancellationTokenをC#プログラムで使用して、IronPDFを使用した長時間実行されるPDF生成タスクをキャンセルする方法を示します。 コードは、PDF 生成プロセス (PdfGenerator クラス) とメイン プログラム ロジック (Program クラス) の 2 つの部分で構成されます。 クラスPdfGenerator:このクラスには、CancellationTokenを通じてキャンセルをサポートしつつ、PDFファイル生成をシミュレートするメソッドが含まれています。 mainメソッド内でCancellationTokenSource()を使用してキャンセルトークンソースを作成し、次にCancellationTokenSourceのTokenプロパティを渡してトークンオブジェクトを作成します。 ChromePdfRendererをIronPDFライブラリから使用して、HTMLコンテンツをPDFドキュメントにレンダリングします。 GeneratePdfWithCancellationメソッドは非同期であり (async)、タスクを返します。 このメソッドは、キャンセル要求を通じてタスクのキャンセルを処理するために、 CancellationToken (token) を受け入れます。 CancellationTokenを使用することで、長時間実行される操作を安全にキャンセルできます。 ただし、キャンセルは協力的であり、タスク自体が定期的にトークンのステータスをチェックしなければなりません。 このコードでは、定期的なキャンセルチェックを伴う長期間のタスクをシミュレートしています。 重要な点は、PDF 生成プロセス中に手動でキャンセルをチェックし (token.IsCancellationRequested)、トークンが渡された場合にキャンセル メソッドを実行する準備ができていることです。 ユーザーがプログラムのキャンセルを示すためにキーを押した場合、タスクは優雅に停止し、OperationCanceledExceptionをスローして、適切かつタイムリーにPDF生成の完了を防ぎます。 キャンセルが発生しない場合、結果のPDFは"output.pdf"として保存され、プログラムが完全なタスクプロセスを実行することを防ぎます。 IronPDFとCancellationTokenの実際の使用例 複数のキャンセルトークンを使用することで、IronPDFを使用した場合、アプリケーションの性能とユーザーエクスペリエンスを向上させることができる実用的な状況がいくつかあります。 以下はその例のいくつかです: 1. Webアプリケーション Webアプリケーションにおいて、ユーザーはPDFフォーマットでのレポート生成などのアクションをよく開始します。 ただし、ユーザーがページから離れたりブラウザを閉じたりすると、システムはこれを検出し、CancellationTokenを使用してPDF生成プロセスを停止できます。 HttpContext.Response.RegisterForDispose(CancellationTokenSource); HttpContext.Response.RegisterForDispose(CancellationTokenSource); $vbLabelText $csharpLabel このシンプルな実装により、不要なタスクにリソースを捧げることを防ぎ、Webサーバーのスケーリング効率を向上させます。 2. 長時間ランニングのレポート レポート用のアプリケーションでは、ユーザーが大量のデータセットをPDFとしてエクスポートすることを要求することがあります。 ユーザーが考えを変えたり、不正確なクエリを実行したりした場合、CancellationTokenを使用して途中でタスクをキャンセルし、リソースの無駄を防ぐことができます。 3. バックグラウンドサービス バックグラウンドサービスやマイクロサービスでは、大きなPDFバッチの生成のように多くの時間を要するタスクを管理する際にCancellationTokenを使用してより効率的に管理できます。 サービスがシャットダウンまたはスケールダウンする直前に、進行中のタスクをクリーンにキャンセルでき、データが失われたり破損したりすることがないようにします。 結論 今日のIronPDFでのキャンセレーショントークンの使用に関する議論を終えましたので、あなたはそれをプロのようにPDFプロジェクトに実装することができるでしょう! C#キャンセレーショントークンとIronPDFを組み合わせて、高効率で応答性の高いアプリケーションを構築し、PDF生成タスクを優雅に処理します。 このアプローチは、タスクが実行中に中断されるのではなく、実行中の安全なポイントでキャンセル要求を確認できる協力キャンセルモデルを可能にします。 長時間実行されるレポートを管理したり、WebアプリケーションでのオンデマンドPDF生成やバックグラウンドサービスを管理したりする際に、単一または複数のCancellationTokenを組み込むことで、不要なタスクをキャンセルでき、リソースの無駄遣いを防ぎ、ユーザーエクスペリエンスを向上させます。 わずか数行のコードで、アプリのスケーラビリティと応答性を向上させ、ユーザーに自分のアクションに関するより多くのコントロールを提供できます。 IronPDFをまだ試していない方は、無料トライアルを試して、その強力なPDF生成能力がC#プロジェクトをどのように変革できるかを確認する絶好の機会です。 よくある質問 C#で長時間実行されるタスクを管理するためにCancellationTokenをどのように使用できますか? CancellationTokenを長時間実行されるタスクに統合するには、それをタスクに渡し、キャンセルが要求されているかどうかを定期的に確認します。これにより、リソースを解放し、アプリケーションの応答性を維持しながら、タスクを円滑に終了できます。 PDF生成において、なぜCancellationTokenが重要ですか? PDF生成では、CancellationTokenは、ユーザーがページから離れた場合などに不要になるタスクをキャンセルすることで、効率的にリソースを管理するのに役立ちます。これにより過剰なサーバーロードを防ぎ、ユーザーエクスペリエンスを向上させます。 C#のPDF生成タスクでCancellationTokenをどのように実装しますか? C#のPDF生成タスクにおいて、CancellationTokenを実装するには、トークンをメソッドに渡し、実行中にキャンセル要求を定期的に確認します。キャンセルが検出された場合、タスクを円滑に終了できます。 PDF生成において、CancellationTokenと非同期メソッドを使用する目的は何ですか? PDF生成でCancellationTokenと非同期メソッドを使用することで、タスクを非同期で実行し、アプリケーションの応答性を向上させ、不要になった場合にはタスクをキャンセルできるようにします。 CancellationTokenはWebアプリケーションでのユーザーエクスペリエンスをどのように改善しますか? CancellationTokenを利用することで、ユーザーがページから離れる際にPDF生成などのタスクをキャンセルし、不要な処理を防ぎつつアプリケーションの応答性を維持することで、ユーザーエクスペリエンスを向上させます。 非同期のPDF作成におけるChromePdfRendererの役割は何ですか? IronPDFのChromePdfRendererはHTMLコンテンツをPDFドキュメントに変換します。非同期操作をサポートしており、CancellationTokenを使用してタスクのライフサイクルと応答性を効果的に管理できます。 PDF生成中にキャンセル要求が行われた場合、何が起こりますか? PDF生成中にキャンセル要求が行われた場合、タスクはCancellationTokenの状態を確認します。キャンセルが検出されると、OperationCanceledExceptionをスローし、プロセスを停止してリソースを節約します。 CancellationTokenはどのようにアプリケーションのスケーラビリティを向上させますか? CancellationTokenは、例えばPDF生成時に不要なタスクをキャンセルできるため、リソース消費を削減し、アプリケーションの全体的なパフォーマンスを向上させることでスケーラビリティを向上させます。 バックグラウンドサービスでCancellationTokenを使用する利点は何ですか? バックグラウンドサービスでは、サービスのシャットダウンやスケーリング操作時に、バッチPDF処理のような長時間実行されるタスクをクリーンにキャンセルできるように、CancellationTokenを使用して管理します。 CancellationTokenをIronPDFと統合することでアプリケーションの効率性はどのように向上しますか? CancellationTokenをIronPDFと統合することで、不要なPDF生成タスクをキャンセルすることでリソース管理が改善され、アプリケーションの効率性と応答性が向上し、サーバーロードが軽減されます。 Jacob Mellor 今すぐエンジニアリングチームとチャット 最高技術責任者(CTO) ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。彼の主要なIronPDFとIron Suite .NETライブラリは、世界中で3000万以上のNuGetインストールを達成し、彼の基礎となるコードは世界中で使用されている開発者ツールに力を与え続けています。25年の商業経験と41年のコーディングの専門知識を持つJacobは、次世代の技術リーダーを指導しながら、エンタープライズグレードのC#、Java、Python PDFテクノロジーにおけるイノベーションの推進に注力しています。 関連する記事 更新日 2026年2月20日 CLIの簡素化と.NETの橋渡し:Curl DotNetとIronPDFを使う Jacob Mellorは、.NETエコシステムにcURLの親しみやすさをもたらすために作成されたライブラリ、CurlDotNetでこのギャップを埋めました。 詳しく読む 更新日 2025年12月20日 RandomNumberGenerator C# RandomNumberGenerator C#クラスを使用すると、PDF生成および編集プロジェクトを次のレベルに引き上げることができます 詳しく読む 更新日 2025年12月20日 C# String Equals(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む C# Select Case(開発者向けの仕組み)math.max C#(開発者向けの仕...
更新日 2026年2月20日 CLIの簡素化と.NETの橋渡し:Curl DotNetとIronPDFを使う Jacob Mellorは、.NETエコシステムにcURLの親しみやすさをもたらすために作成されたライブラリ、CurlDotNetでこのギャップを埋めました。 詳しく読む
更新日 2025年12月20日 RandomNumberGenerator C# RandomNumberGenerator C#クラスを使用すると、PDF生成および編集プロジェクトを次のレベルに引き上げることができます 詳しく読む
更新日 2025年12月20日 C# String Equals(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む