C#中自訂事件
C#語言中有77個關鍵字,其中delegate和event專門為C#中事件處理系統提供的。
delegate聲明定義一種參考型別,該類型可用於將方法用特定的簽名封裝。委託執行個體封裝靜態方法或執行個體方法。委託大致類似於 C++ 中的函數指標;但是,委託是型別安全和可靠的。
event指定一個事件。在C#的類中存在以下成員:域(Fields)、屬性(Properties)、方法(Methods)、索引(Indexs)、事件(Events),其中事件(Events)成員就是用來聲明一個類事件的。在類中聲明一個事件成員一般採用如下的文法形式:public event 委託名 事件名。
本程式是UDP通訊的UI測試程式,負責接收資料報文,打算要定義簡單的自訂事件,首先定義委託,然後定義事件類別。
在檔案Delegate.cs中定義兩個委託:
namespace Communication
{
public delegate void DgOnDataRecvFinished(object sender,bool e);//檔案接收結束代理。
public delegate void DgOnDataRecvStart(object sender,bool e);//檔案接收結束代理。
public delegate void DgOnDataArrived(object sender,UdpEventArgs e);//資料抵達代理.
自訂事件類別UdpEventArgs也位於這個檔案中,包括一個訊息屬性和位元組數組.
public class UdpEventArgs:EventArgs
{
string msg="";
private byte[] recvdata=null;
public UdpEventArgs(){}
public string Msg
{
set
{
msg=value;
}
}
public byte[] RecvData
{
set
{
recvdata=value;
}
get
{
return recvdata;
}
}
}
新事件類別和三個委託定義完畢.