1、先定義一個觸發的類 :triggerClass
這個類最主要用途是負責和EventArgs()給綁定起來。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 回調函數的應用
{
//事件的監控者
public class triggerClass
{
//1.委託一個事件監控
public delegate void TriggerEventHandle(object sender, EventArgs e);
//2.申明這個出發事件
public event TriggerEventHandle trigger;
//3.觸發的邏輯(函數)
public void TMedthod()
{
if (this.trigger !=null)
{
Console.WriteLine("這個事件觸發了!");
Console.WriteLine("通過new EventArgs(),已將觸發告知Hoster監控者!");
this.trigger(this,new EventArgs());//綁定觸發的事件(把觸發和監控條件通過new EventArgs()方法關聯起來)
}
}
}
}
2、再定義一個監管者類:Hoster
顧名思義就是觸發後,回造成什麼樣的結果。即爲回調了。
// An highlighted block
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 回調函數的應用
{
//事件的接受者
public class Hoster
{
//觸發後的反應處理情況(處理函數)
void GetTriggMedthod(object sender, EventArgs e)
{
Console.WriteLine("我得到了觸發,我的結果是**********");
}
//用構造函數取註冊該事件
public Hoster(triggerClass triggInstance )
{
triggInstance.trigger += new triggerClass.TriggerEventHandle(GetTriggMedthod);
}
}
}
3、最後在主邏輯上觸發這個所謂的**“事件”**:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 回調函數的應用
{
class Program
{
//主邏輯上完成觸發流程
static void Main(string[] args)
{
triggerClass tr1 = new triggerClass();
Hoster host = new Hoster(tr1);
int index = 0;
for (int i = 0; i < 1000; i++)
{
index = i;
while (index == 100)
{
Console.WriteLine("條件到達,開始觸發");
tr1.TMedthod();
index = index + 1;
Console.ReadKey();
}
}
}
}
}
最後說一下,一直困擾我很久不明白的地方。
我一直不理解這個事件及機制,傳來傳去就搞暈了。其實只要這樣大概理解,就很簡單。關係更深層次的不做探究。小弟能力有限。
打比方:有三個角色,角色一,個爲“傳遞消息者”跑腿的。角色二、EventArgs(),這個就是理解爲消息的管道、途徑等。角色三,Hoster監管者,就是得到消息後,做出什麼樣的反應。
角色一:委託一個事件、申明事件等都是爲了要將觸發的內容綁定在EventArgs()上。
角色二:負責傳遞消息。
角色三:通過EventArgs()上的消息,做出反應。
最後show一下結果:
2020-06-21