c 事件機制

2021-08-21 21:02:37 字數 1071 閱讀 8213

c# 事件機制比mfc 理解起來更為容易。記錄如下。

理解c#的事件機制,需要理解事件的三方,事件產生方,事件接收方,和事件本身的資料。 

下面直接參照網上的乙個例子來說明這三方。假設乙個溫度監測器,監測加熱爐的溫度,當溫度到達100度的時候報警。在這個例子中,事件本身是監測溫度,事件發生方是加熱爐,事件接收方是報警器。

1.事件資料類 。       在c#中,事件資料類是繼承自eventargs 類。如果事件本身需要有狀態資訊,則需要從eventargs類中派生出乙個類來,專門描述事件的資料。本例中,需要引入temperature 來描述事件,因此也需要繼承eventargs。

public class tempeventargs : eventargs

}

2. 事件的發出方: heater

public class heater }

}3.事件的接收方:monitor

public  class monitor

public void heater_tempreach(object sender, tempeventargs e)

",e.temperature);

}}

最後,需要在主程式中執行。

static void main(string args)

總的程式**如下,親測可用,

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

}   public class heater}}

} public class monitor

public void heater_tempreach(object sender, tempeventargs e)

",e.temperature);}}

class program

}}

C 事件機制

在所有關於c 事件機制的介紹中,我更傾向於發布者 訂閱者 publisher subscriber 這種描述。理解事件機制並不是一件容易的事情,它所涉及的思想值得我們好好去研究。本文資源來自 c 與.net技術平台實戰演練 中國青年出版社 談到事件,我們涉及到兩個角色 事件發布者 publisher...

C 的事件機制

c 的事件機制是基於委託實現的。實現乙個事件,要先定義乙個委託型別 class1 然後我們可以使用 和 註冊 移除事件 class1.event1 new mydelegate new myeventargs 在class中引發事件時最好這樣 class1 如果不想宣告自己的委託型別的話,可以使用s...

C 事件機制實現

事件是面向元件開發的必要特性之一,但c 不直接支援事件,沒關係,我自己實現了乙個,感覺很好用,分享給大家!最開始打算用函式指標模擬事件,但由於c 中成員函式指標不能和void 相互強轉,而且 typedef中不能含有模板,所以才不得已以介面繼承實現。這樣效果也不錯 一.先看看事件介面定義和實現 上面...