在以往的關於事件處理的程式中,我們更多的是採用一種迴圈等待的方式,即為了檢測某個事件是否發生,迴圈的檢測某個變數是否發生變化但這樣會占用大量的資源。而c# 的事件處理機制提供了一種非常好的解決方案。程式不再不停的檢查裝置,而是等待訊息的到來,然後交給程式來處理他它。這樣的話,作業系統中只是傻瓜式的將訊息傳遞給物件,由物件的事件驅動程式確定該怎麼做。
我們先來介紹一下什麼是事件:
事件就是一種訊息通知,它是物件之間傳遞訊息的一種方式。事件是類的一種成員。使用event宣告事件。c#採用一種稱作:「發布」-「登記」-「接受」的邏輯來在物件之間傳 遞訊息,通知某個事件的發生。
接著,我們要來介紹一下什麼是事件的委託,簡單的說,委託就是一種物件導向的安全的函式指標。具體點:我們定義了兩個類,乙個用來發布事件,乙個用來接收事件,但是傳送方如何知道那個接收方將接受這個訊息呢。這樣的話,我們就需要在這兩者之間創造一種媒介,這個媒介就是委託。
接著。我們來用**的形式研究一下:
事件的發布者:
public class somesenderclass
//模擬事件
public void sometiggermethod()
}
事件的接收者:
public class somereceiverclass
}
登記和觸發事件**的形式:
public static main(string args)
}這樣我們基本理解了c#事件處理的流程。
附上乙個寫的較好的處理按鍵事件處理的程式,來幫助我們理解c#事件處理。
using system;
internal class keyeventargs : eventargs
public char keychar
}}internal class keyinputmonitor
while (!finished);
}}internal class eventreceiver
private void onkeydown(object sender, keyeventargs e)
", e.keychar);
}}public class mainentrypoint
}
C 的事件處理機制
今天,花費了一下午事件,終於算是了解了事件的處理機制。在c 中,對於事件的應用其實可以有四個步驟。1.在事件發行者中定義乙個事件 2.在事件發行者觸發事件 3.在事件訂閱者中處理事件的處理程式 4.向事件發行者訂閱事件.在c 中事件是經常被用到的一種概念。如果要實現乙個事件,首先要有兩個物件,乙個是...
C 的事件處理機制
在以往的關於事件處理的程式中,我們更多的是採用一種迴圈等待的方式,即為了檢測某個事件是否發生,迴圈的檢測某個變數是否發生變化但這樣會占用大量的資源。而c 的事件處理機制提供了一種非常好的解決方案。程式不再不停的檢查裝置,而是等待訊息的到來,然後交給程式來處理他它。這樣的話,作業系統中只是傻瓜式的將訊...
C 的事件處理機制應用
如果要在c 中定義乙個事件,首先你要創造乙個delegate 委派 用他來定義乙個你所想使用事件的標籤,然後你才能使用event關鍵字,在這個委派的基礎上定義乙個事件.兩點需要注意的是 第一,首先你要創造乙個委派,第二,根據你所創造的委派來定義乙個事件,這才是乙個完整的事件定義.假設我們把書中的pr...