C 的事件處理機制

2022-05-07 01:18:08 字數 1382 閱讀 8113

在以往的關於事件處理的程式中,我們更多的是採用一種迴圈等待的方式,即為了檢測某個事件是否發生,迴圈的檢測某個變數是否發生變化但這樣會占用大量的資源。而c#   的事件處理機制提供了一種非常好的解決方案。程式不再不停的檢查裝置,而是等待訊息的到來,然後交給程式來處理他它。這樣的話,作業系統中只是傻瓜式的將訊息傳遞給物件,由物件的事件驅動程式確定該怎麼做。

我們先來介紹一下什麼是事件:

事件就是一種訊息通知,它是物件之間傳遞訊息的一種方式。事件是類的一種成員。使用event宣告事件。c#採用一種稱作:「發布」-「登記」-「接受」的邏輯來在物件之間傳 遞訊息,通知某個事件的發生。  

接著,我們要來介紹一下什麼是事件的委託,簡單的說,委託就是一種物件導向的安全的函式指標。具體點:我們定義了兩個類,乙個用來發布事件,乙個用來接收事件,但是傳送方如何知道那個接收方將接受這個訊息呢。這樣的話,我們就需要在這兩者之間創造一種媒介,這個媒介就是委託。

接著。我們來用**的形式研究一下:

事件的發布者:

[csharp]view plain

copy

public class somesenderclass  

//模擬事件  

public void sometiggermethod()  

}  事件的接收者:

[csharp]view plain

copy

public class somereceiverclass  

}  登記和觸發事件**的形式:

[csharp]view plain

copy

public static main(string args)   

}  這樣我們基本理解了c#事件處理的流程。

附上乙個寫的較好的處理按鍵事件處理的程式,來幫助我們理解c#事件處理。

[csharp]view plain

copy

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 的事件處理機制提供了一種非常好的解決方案。程式不再不停的檢查裝置,而是等待訊息的到來,然後交給程式來處理他它。這樣的話,作業系統中只是傻瓜式的將訊...

C 的事件處理機制

今天,花費了一下午事件,終於算是了解了事件的處理機制。在c 中,對於事件的應用其實可以有四個步驟。1.在事件發行者中定義乙個事件 2.在事件發行者觸發事件 3.在事件訂閱者中處理事件的處理程式 4.向事件發行者訂閱事件.在c 中事件是經常被用到的一種概念。如果要實現乙個事件,首先要有兩個物件,乙個是...

C 的事件處理機制應用

如果要在c 中定義乙個事件,首先你要創造乙個delegate 委派 用他來定義乙個你所想使用事件的標籤,然後你才能使用event關鍵字,在這個委派的基礎上定義乙個事件.兩點需要注意的是 第一,首先你要創造乙個委派,第二,根據你所創造的委派來定義乙個事件,這才是乙個完整的事件定義.假設我們把書中的pr...