イベントEvent、単一スレッドでのコールバック

Contents

おさらい

イベントはアクションの発生を知らせる為に、オブジェクトにより送信されるメッセージです。

イベントはeventキーワードを使用し、イベントにデリゲート型を指定します。

イベントに応答するには、イベント レシーバーのイベント ハンドラ メソッドを定義します。EventHandlerはdelegateで定義されます。

delegate void hoge(int a)->hoge型のメソッドは戻り値無しで引数はintです。

デリゲートはメソッドへの参照を保持する型です。

フォームにボタンを張り付け、ボタンを押下した時の処理→つまりイベントの受け(コールバックメソッド)は下記となります。

private void ボタン_Click(object sender, EventArgs e){}//イベントの処理

この場合、Designers.csを見るとイベントハンドラの追加(上記のボタン_Clickメソッドが呼び出される)が自動生成されています。

this.ボタン.Click += new System.EventHandler(this.ボタン_Click);

さらに、EventHandlerの定義へ移動すると・・・引数が(object sender, EventArgs e)で戻り値が無しであるメソッドのdelegete型である事が分かります。
public delegate void EventHandler(object sender, EventArgs e);

EventHandler型のメソッドは戻り値無しで、引数がobject sender, EventArgs eです。

上記の要素を作成する事によりイベントの処理が書けそうです。

①イベントハンドラー定義

②イベントハンドラの追加

③イベントの処理

用語やガイドライン

ガイドラインに準拠したイベントを発行する (C# プログラミング ガイド)

中身が深すぎます。(ガイドラインに準拠しませんが)簡単なパターンを覚える事にします。

簡単なパターン(データを返さない場合)

簡単なパターン(データを返す場合)

プログラム記述の順番

1.イベントを発生させるクラスの記述

1-1.イベントデリゲートを宣言する。・・・戻すデータを考慮してdelegate宣言を行う

1-2.外部からイベント発生要求に応えるメソッドの作成。

1-3.メソッド内にイベント発生を記述する。

2.コールバック部分(イベント発生後処理)を記述する

3.イベントの発生元の記述・・・1-1.と戻すデータ引数を合わせる。

3-1.イベント発生オブジェクトの生成を行う。

3-2.イベントハンドラを追加する。・・・イベント発生時のメソッドにコールバックを対応させる。

4.イベントを発生トリガーを発動させる。

以上で、イベント発生時の待ちをコールバック処理できる様になります。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする