C#事件

事件是用戶操作,例如:按鍵,點擊,鼠標移動等,或者某些事件,例如:系統生成的通知。應用程序需要響應事件發生時。 例如,中斷。事件用於進程間通信。

使用委託與事件

事件在類中聲明和引發,並使用同一個類或其他類中的委託與事件處理程序相關聯。包含事件的類用於發佈事件。這被稱爲發佈者類。接受這個事件的其他類被稱爲訂閱者類。事件使用發佈者訂閱者模型。

發佈者是一個包含事件和委託的定義的對象。事件委託關聯也在此對象中定義。 發佈者類對象調用該事件,並將其通知給其他對象。

訂閱者是接受事件並提供事件處理程序的對象。發佈者類中的委託調用訂閱者類的方法(事件處理程序)。

聲明事件

要在類中聲明事件,首先必須聲明事件的委託類型。 例如,

public delegate string MyDel(string str);

接下來,使用event關鍵字聲明事件:

event MyDel MyEvent;

上面的代碼定義了一個名稱爲BoilerLogHandler的委託和一個名稱爲BoilerEventLog的事件,它在引發時調用委託。

例子

using System;

namespace SampleApp {
   public delegate string MyDel(string str);

   class EventProgram {
      event MyDel MyEvent;

      public EventProgram() {
         this.MyEvent += new MyDel(this.WelcomeUser);
      }

      public string WelcomeUser(string username) {
         return "Welcome " + username;
      }

      static void Main(string[] args) {
         EventProgram obj1 = new EventProgram();
         string result = obj1.MyEvent("Yiibai Yiibai");
         Console.WriteLine(result);
      }

   }
}

當上述代碼被編譯並執行時,它產生以下結果:

Welcome Yiibai Point