關於c 中的事件處理機制

2021-09-05 15:26:07 字數 1469 閱讀 2790

在程式中怎麼實現事件。要明白事件,首先要知道什麼是委託。在c#中委託允許開發人員

將乙個物件中的方法傳遞給另乙個能呼叫該方法的類的某個物件。比如:可以將類ac中的乙個方法add[前

提是這個方法以被包含在某個委託中了]傳遞給另乙個類wms。此時類wms就能呼叫類ac中的add了。當然不

管你是以什麼方式實現方法的傳遞了,可以是靜態的,也可以是例項化的。。要實現乙個委託,需要按照

這樣的不揍:

a:申明委託物件。注意:引數一定要和你想要包含的方法的引數形式一致。

public delegate void neweggdelegate(string values)

b:定義方法

class neweggclass1

public viod neweggmethod2(string values){}

....}

c:建立乙個委託物件此時將這個方法包含在該委託物件中

class neweggclass2

}d:再呼叫包含在委託中的方法。

class neweggclass3

}class test

}而事件是具有特定引數的委託物件而已。格式象:public delegate void neweggeventhandler(object

sender,neweggeventargs e);

sender表示觸發該事件的物件,e表示在事件處理函式裡可以被使用的一些資料象neweggeventargs可以繼

承自evenetargs類。當然有的時候不需要派生自己的類想一些gui的程式,裡面有很多縣城的事件使用如

:mouseeventargs。否則必須從eventargs類派生。

現在舉例如下:

using system;

//步驟1:宣告委託物件

public delegate void myhandler1(object sender,myeventargs e);

public delegate void myhandler2(object sender,myeventargs e);

//步驟2:建立事件處理函式的方法

class a",

e.m_id);

} public void onhandler2(object sender,myeventargs e)",

e.m_id);

} //步驟3:建立委託物件,並事件處理函式包含在其中同時設定好將要觸發事件的物件

public a(b b)

} //步驟4:通過委託物件(也就是觸發事件)來呼叫被包含的方法

class b

} public void fireevent2(myeventargs e)

} }

public class myeventargs eventargs

public class driver

}

C 的事件處理機制

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

C 的事件處理機制

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

C 的事件處理機制

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