次の方法で共有


イベントとコールバック

コールバック メソッドとは、操作や動作が完了するとデリゲートによって自動的に呼び出されるメソッドです。 たとえば、非同期デザイン パターンには、AsyncCallback デリゲートを使用して、非同期操作の完了時に実行するコードを指定するものがあります。 このデザイン パターンは、コールバックを使用して非同期書き込み操作の結果を処理する BeginWrite メソッドで使用されます。

イベントは、コールバックと同じような機構です。 イベントを使用すると、通常、状態の変更や動作の開始または終了に関連する特定の条件の下で、ユーザー指定コードを実行できます。 言語構文やツールを使用することによって、イベントを認識したり処理したりするための一貫したコーディング体験が実現されるため、イベントはコールバックよりも簡単に使用できます。 また、イベントは、適切に定義されたシグネチャ パターンを持つ、イベント ハンドラーにと呼ばれるデリゲートによって処理されます。 イベントの詳細については、「イベントのデザイン」を参照してください。

以下のガイドラインに従うと、ライブラリ デザインで、推奨される手順に従ってイベントとコールバックを使い分けることができます。

フレームワークによって実行されるカスタム コードをユーザーが提供できるようにするには、コールバックを使用することを検討してください。

ユーザーがオブジェクトの方向を理解する必要なしにフレームワークの動作をカスタマイズできるようにするには、イベントの使用を検討してください。

イベントは、広範な開発者にとってなじみがあり、また Visual Studio のステートメント入力候補に統合されているため、単純なコールバックよりも優先させてください。

パフォーマンスが重視される API では、コールバックを使用しないでください。

コールバックとイベントは、多くの開発者がより簡単に理解し使用できますが、パフォーマンスとメモリ消費の点から見ると、仮想メンバー に劣ります。

デリゲートを呼び出して任意のコードを実行すると、セキュリティ、正確さ、および互換性に悪影響が及ぶ可能性があることを理解してください。

イベントやコールバックを使用すると、共通言語ランタイム (CLR: Common Language Runtime) のコンテキストで任意のコードを実行できます。 コードとセキュリティのレビュー時には、これらの機能拡張ポイントを慎重にチェックして、セキュリティ上の脆弱性を特定する必要があります。

Portions Copyright 2005 Microsoft Corporation. All rights reserved.

Portions Copyright Addison-Wesley Corporation. All rights reserved.

設計ガイドラインの詳細についてを参照してください、「フレームワークの設計ガイドライン。規則、慣用句、および再利用可能なパターン。ネット ライブラリ」本クシシュトフ Cwalina、ブラッド エイブラムス、アスキー、2005 年発表しました。

参照

その他の技術情報

機能拡張のデザイン

クラス ライブラリ開発のデザイン ガイドライン