C 的事件處理機制

2021-06-06 04:32:34 字數 1174 閱讀 5368

在以往的關於事件處理的程式中,我們更多的是採用一種迴圈等待的方式,即為了檢測某個事件是否發生,迴圈的檢測某個變數是否發生變化但這樣會占用大量的資源。而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...