ホーム プログラミング言語 C Shape C# イベント (イベント)






C# イベント (イベント)




 
C# では、イベント (Event) は、キーボードのキーのクリック、マウスのクリック/移動などの一連のユーザー操作として見ることができます。イベントが発生すると、そのイベントに対して一連の応答を行うことができます。 、プログラムの終了、ログ記録など。 C# のスレッド間の通信は、イベント メカニズムを使用して実装されます。

 

イベントはクラス内で宣言して起動し、委任を通じてイベント ハンドラーに関連付ける必要があります。イベントは、パブリッシャとサブスクライバの 2 つの部分に分けることができます。パブリッシャは、イベントとデリゲートを含むオブジェクトです。イベントとデリゲートの間の関係も、このクラスで定義されます。パブリッシャ クラスのオブジェクトは、トリガーできます。デリゲートは他のオブジェクトに通知します。サブスクライバーはイベントを受信して​​イベント ハンドラーを提供するオブジェクトであり、パブリッシャー クラスのデリゲートはサブスクライバー クラスのメソッド (イベント ハンドラー) を呼び出します。

このイベントでは次の点に注意する必要があります。

  • パブリッシャーはイベントをトリガーするタイミングを決定し、サブスクライバーはイベントに応答して何を行うかを決定します。
  • イベントには複数のサブスクライバーを含めることができ、サブスクライバーは複数のパブリッシャーからのイベントを処理することもできます。
  • サブスクライバーのないイベントは決して起動しません。
  • イベントは、ボタンのクリックなど、ユーザーのアクションを定義するためによく使用されます。
  • イベントに複数のサブスクライバーがある場合、イベントがトリガーされると、すべてのイベント ハンドラーが同期的に呼び出されます。
  • .NET クラス ライブラリでは、イベントは EventHandler デリゲートと EventArgs 基本クラスに基づいています。

クラスでイベントを宣言するには、まずイベントのデリゲート型を宣言する必要があります。次に例を示します。

public delegate void delegate_name(string status);

次に、次のように、event キーワードを使用してイベント自体を宣言します。

// 基于上面的委托定义事件
public event delegate_name event_name;

上記の例では、delegate_name およびevent_name という名前のイベントが定義されており、イベントがトリガーされるとデリゲートが呼び出されます。

【使用例】 以下では、具体的な例を用いてイベントの使用方法を説明します。

 using System;

namespace it-kiso.com
{
    class Demo
    {
        static void Main(string[] args){
            PublisherDemo e = new PublisherDemo(); /* インスタンス化発行者クラス*/
            SubscriberDemo v = new SubscriberDemo(); /* インスタンス化購読者クラス */
            e.MyEvent += new PublisherDemo.MyEntrust( v.printf );
            e.SetValue("IT基礎");
        }
    }
    
    /***********発行者クラス***********/
    public class PublisherDemo{
        private string value;

        public delegate void MyEntrust(string str);

        public event MyEntrust MyEvent;

        public void SetValue( string s ){
            value = s;
            MyEvent(value);     // イベントを発生する
        }
    }

    /***********購読者クラス***********/
    public class SubscriberDemo{
        public void printf(string str){
            Console.WriteLine(str);
        }
    }
} 

操作の結果は次のようになります。

IT基礎

「C# イベント (イベント)」についてわかりやすく解説!絶対に観るべきベスト2動画

C# Programming Event Handlers