複数のイベントの発生

作成するクラスで複数のイベントを発生させ、それらのイベントを「イベントの発生」での説明に従ってプログラミングした場合、コンパイラは、イベント デリゲートのインスタンス 1 つについて 1 つのフィールドを生成します。 イベントの数が多い場合は、デリゲート 1 つあたり 1 フィールドというストレージ コストが許容されない可能性があります。 このような状況に備えて、.NET Framework には、イベント デリゲートを格納するために任意に選択した別のデータ構造体と組み合わせて使用できる、イベント プロパティ (Visual Basic 2005 のカスタム イベント) と呼ばれる構成が用意されています。

イベント プロパティは、イベント アクセサーを伴うイベント宣言によって構成されます。 イベント アクセサーは、イベント デリゲートのインスタンスをストレージ データ構造体に追加または削除できるように定義するメソッドです。 イベント プロパティを使用すると、イベント プロパティは各イベント デリゲートを呼び出す前に取得する必要があるので、イベント フィールドよりも低速です。 つまり、メモリを取るか、速度を取るかの比較検討になります。 クラスで、発生頻度の低いイベントを数多く定義する場合は、イベント プロパティを実装することをお勧めします。 Windows フォーム コントロールや ASP.NET サーバー コントロールでは、イベント フィールドではなく、イベント プロパティを使用しています。

参照

処理手順

方法 : イベント プロパティを使用して複数のイベントを処理する

方法: カスタム イベントを宣言してメモリを節約する (Visual Basic)

参照

System.ComponentModel.EventHandlerList

System.Web.UI.Control.Events

その他の技術情報

イベントの処理と発生