次の方法で共有


複数のイベントの発生

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

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

参照

処理手順

方法 : イベント プロパティを使用して複数のイベントを処理する
方法 : メモリの使用量を節約するイベントを宣言する

関連項目

System.ComponentModel.EventHandlerList
System.Web.UI.Control.Events

その他の技術情報

イベントの処理と発生