IRONSOFTWAREHOME
開発者向けアップデート

C# Event Handler(開発者向けの仕組み)

Jacob Mellor、Ironチームの最高技術責任者(CTO)
Jacob Mellor
Updated: 2026年4月21日

最新 for .NETアプリケーションでは、イベント駆動型プログラミングが応答性を改善し、スムーズなユーザーエクスペリエンスを保証する重要な役割を果たします。 PDF生成のようなタスクが時間を要する場合、メインスレッドをブロックしたくないです。 代わりにイベントハンドラーを使用して非同期でタスクを実行し、イベントが発生したらリアクトすることで、アプリケーションをよりインタラクティブで応答性の高いものにできます。

このガイドでは、デスクトップおよびウェブ環境でシームレスなPDFワークフローを実現するために、IronPDFをC#のイベント処理メソッドと統合する方法を紹介します。 WinForms、WPF、または他のC#プログラミング言語ベースのプラットフォームを使用しているかどうかにかかわらず、このガイドはあなたをサポートします。

IronPDFプロジェクトのセットアップ

イベント処理に入る前に、.NETプロジェクトでIronPDFをすばやくセットアップしましょう。

NuGetを介してIronPDFをインストールする

Visual Studioのパッケージマネージャーコンソールで次を実行します:

PM > Install-Package IronPdf

これにより、IronPDFを使用してPDFを生成するために必要なすべてがインストールされます。

IronPDFを使用した基本的なPDF生成

IronPDFが動作していることを確認するための簡単な例です:

using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
pdf.SaveAs("example.pdf");

これが動作したら、イベントフィールドを追加し、登録されたデリゲートを結びつけ、デリゲートタイプを使用してイベント駆動型ワークフローを作成する準備が整いました。

.NET開発者のためのC#イベントハンドラーの基礎

イベント駆動型プログラミングの基本

イベント駆動型プログラミングでは、PDFの生成が完了した場合など、イベントが発生したときにアプリが応答します。 C#は型安全な関数ポインターとしてデリゲートを使用することで、アプリがどのように反応するべきかを定義できます。

通常はeventキーワードを使用してイベントを宣言し、イベント処理メソッドに接続して、カスタムEventArgsサブクラスを使用してデータを渡します。

eventキーワードを使用してイベントを宣言する

C#はeventキーワードを使用してイベントメンバーを宣言します。 例えば:

public event EventHandler PdfGenerated;

この行は、PdfGeneratedという名前のイベントフィールドを宣言します。 EventHandlerを使用し、次のパラメータリストを持つ組み込みデリゲートです: (object sender, EventArgs e)—これが.NETでのイベントの命名パターンと呼ばれることがよくあります。

C#のイベントの定義とサブスクライブ

デリゲートを使用してイベントにメソッドを追加する

C#イベントは、+=構文を使用してランタイムでメソッドを追加することをサポートします。 1. Visual Studioを開き、"ツール">"NuGetパッケージマネージャー">"ソリューションのNuGetパッケージの管理"に移動します。

pdfService.PdfGenerated += (s, e) =>
{
    Console.WriteLine("PDF was generated!");
};

この購読者クラスは、PdfGeneratedイベントをリッスンし、トリガーされるとメソッドを呼び出します。

カスタムイベントデータ

生成されたファイルパスなどのイベントデータを渡すには、EventArgsから派生したクラスを定義します:

public class PdfGeneratedEventArgs : EventArgs
{
    public string FilePath { get; set; } // returned value
}

次に、汎用デリゲート型を使用してイベントを再定義します。

public event EventHandler<PdfGeneratedEventArgs> PdfGenerated;

イベントが発生するとき、構造化された型安全なデータを提供し、応答ロジックをより強力にすることができます。

複数のイベントを処理する

複数のイベントを定義できます:

public event EventHandler PdfGenerationStarted;
public event EventHandler<PdfGeneratedEventArgs> PdfGenerationCompleted;

各イベントフィールドは購読者クラスによって処理され、段階ごとに異なるイベントハンドラーメソッドを許可します。 この懸念の分離は、複雑なワークフローで理にかなっています。

IronPDFを使用したイベントハンドラー

大型のPDFを生成するときには、IronPDFをバックグラウンドスレッドで実行して完了時にUIに通知するのが理にかなっています。 イベント駆動型設計がどのように役立つかを紹介します:

  • BackgroundWorkerを使用して非同期的にPDFを生成します。
  • 各段階が完了するたびにイベントを発生させる
  • イベントデータオブジェクトを使用して結果データを渡す

コード例 - 非同期でPDFを生成する

次の例は、IronPDFを使用したイベント処理の完全なコードです:

using System;
using System.ComponentModel;
using IronPdf;
namespace IronPdfEventHandlerExample
{
    // 1. Define custom EventArgs to carry event data
    public class PdfGeneratedEventArgs : EventArgs
    {
        public string FilePath { get; set; }
    }
    // 2. Main class with event, BackgroundWorker, and logic
    public class PdfGenerator
    {
        // Declare the public event using EventHandler<t>
        public event EventHandler<PdfGeneratedEventArgs> PdfGenerated;
        private readonly BackgroundWorker _worker;
        public PdfGenerator()
        {
            _worker = new BackgroundWorker();
            _worker.DoWork += OnDoWork;
            _worker.RunWorkerCompleted += OnRunWorkerCompleted;
        }
        // Start the async operation
        public void GenerateAsync(string html, string outputPath)
        {
            _worker.RunWorkerAsync(new Tuple<string, string>(html, outputPath));
        }
        // Perform PDF generation in background
        private void OnDoWork(object sender, DoWorkEventArgs e)
        {
            var (html, path) = (Tuple<string, string>)e.Argument;
            var renderer = new HtmlToPdf();
            var pdf = renderer.RenderHtmlAsPdf(html);
            pdf.SaveAs(path);
            e.Result = path;
        }
        // Notify subscribers when the PDF is ready
        private void OnRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            var path = e.Result as string;
            PdfGenerated?.Invoke(this, new PdfGeneratedEventArgs { FilePath = path });
        }
    }
    // 3. Program to wire it all together
    class Program
    {
        public static void Main(string[] args)
        {
            var generator = new PdfGenerator();
            // Subscribe to the PdfGenerated event
            generator.PdfGenerated += OnPdfGenerated;
            Console.WriteLine("Generating PDF asynchronously...");
            generator.GenerateAsync("<h1>Hello, IronPDF!</h1>", "output.pdf");
            Console.WriteLine("Press any key to exit after generation.");
            Console.ReadKey();
        }
        // Event handler for when the PDF is ready
        static void OnPdfGenerated(object sender, PdfGeneratedEventArgs e)
        {
            Console.WriteLine($"PDF generated at: {e.FilePath}");
        }
    }
}

コンソール出力

C#イベントハンドラ(開発者向けの仕組み):図1 - コンソール出力

PDF 出力

C#イベントハンドラ(開発者向けの仕組み):図2 - PDF出力

このコードの主要な機能

public event EventHandler<PdfGeneratedEventArgs>:厳密に型指定されたイベントを宣言します * PdfGeneratedEventArgs:イベントデータ用のカスタムクラス * BackgroundWorker:UIがブロックされないよう、非同期実行を許可します * ?.Invoke(...):安全なイベント呼び出し * Tuple<string, string>:HTMLと出力パスをバックグラウンドスレッドに渡します

.NETでのイベント作業のヒント

1. UIスレッドのブロッキングを避ける

RunWorkerCompletedのようなイベントハンドラを使用して、バックグラウンドタスクが完了した後にのみUIを更新します。

2. 例外を優雅に処理する

DoWork内で作業ロジックをtry-catchブロックでラップし、e.Errorを通じてRunWorkerCompletedに例外を渡します。

if (e.Error != null)
{
    MessageBox.Show("Error: " + e.Error.Message);
}

3. 必要に応じて購読解除する

長時間実行するアプリでは、イベントが不要になったときに購読解除を行ってメモリリークを避けます:

pdfWorker.DoWork -= PdfWorker_DoWork;

最終的な考え

イベントハンドラー、デリゲートタイプ、およびイベントフィールドを使用することで、IronPDFは.NETアプリケーションに応答性と近代的なエッジを追加します。 ベースクラスでのドキュメント生成、派生クラスでの再利用可能なロジックの作成、または.NETのイベントモデルの探索にかかわらず、このパターンはスケーラブルでクリーンです。

このアプローチを使用するタイミング

  • タスクが完了したときにイベントを発生させたい
  • ロジックとUIの間のクリーンな分離が必要 * BackgroundWorker、イベント、デリゲートと一緒に作業しています
  • C#の型安全な関数ポインターメカニックを好む

検討する代替案

* 新しいワークフローのためのTask.RunIProgress<t> は長時間の操作中のリアルタイム更新に使用され、IronPDFとC#イベントを組み合わせることで、実用性を意識した強力で反応性の高いPDF生成アプリの作成が簡単になります。 イベント駆動型PDF生成をあなた for .NETアプリに実装する準備ができましたか? IronPDF無料トライアルをお試しください。スムーズで非ブロッキングな体験でユーザーを満足させましょう!

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。