C 的事件處理機制應用

2021-04-08 22:42:04 字數 924 閱讀 1878

如果要在c#中定義乙個事件,首先你要創造乙個delegate(委派),用他來定義乙個你所想使用事件的標籤,然後你才能使用event關鍵字,在這個委派的基礎上定義乙個事件.

兩點需要注意的是:第一,首先你要創造乙個委派,第二,根據你所創造的委派來定義乙個事件,這才是乙個完整的事件定義.

假設我們把書中的product類進行增強.加入了乙個namechanged事件,此事件只有當name通過屬性渠道被更改時就會發生.而如果私有變數name是通過類的內部**被修改時,此事件不會發生.**如下:

public class product

set}}}

上一課中的初始化函式product(引數1,引數2)就無法引發事件,因為此時的name是通過內部被修改的,所以這樣定義的時候,當物件被例項話的時候事件不會發生,但當物件的name屬性通過saleproduct.name = "abcdefg"被更改時,就會引發事件.

在此處我們可以看到,當事件發生時,還沒有執行任何實際的**,要處理事件,你必須要建立乙個對應此事件的子程式,此子程式所包含的內容就是當乙個事件發生時,所要處理的一系列的操作,然後連線子程式到事件.要控制product類,你需要在另外乙個類中定義乙個事件鉤子(event handler).此事件鉤子要與事件(event)有著相同的語法,例如,在product類中事件是沒有返回引數也沒有引數的,所以事件鉤子要與之一致,形式如下:

public void changedetected()

product saleproduct = new product();

saleproduct.namechanged += new namechangedeventhandler(changedetected);

現在,當saleproduct.name = "kitchen garbage"執行時,事件就會發生,而發生所要處理的具體操作則寫在changedetected()裡面.

C 的事件處理機制應用

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

C 的事件處理機制應用

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

C 的事件處理機制

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